当前位置: 首页 > news >正文

海口仿站定制模板建站企业在线培训平台

海口仿站定制模板建站,企业在线培训平台,中国建设银行个人网上银行登录,给设计公司起名大全😏★,:.☆( ̄▽ ̄)/$:.★ 😏 这篇文章主要介绍常用查找算法。 学其所用,用其所学。——梁启超 欢迎来到我的博客,一起学习,共同进步。 喜欢的朋友可以关注一下,下次更新不迷路&#x1…

😏★,°:.☆( ̄▽ ̄)/$:.°★ 😏
这篇文章主要介绍常用查找算法。
学其所用,用其所学。——梁启超
欢迎来到我的博客,一起学习,共同进步。
喜欢的朋友可以关注一下,下次更新不迷路🥞

文章目录

    • :smirk:1. 算法介绍
    • :blush:2. C++实现

😏1. 算法介绍

查找算法的作用是在给定的数据集合中搜索目标元素或确定目标元素是否存在。它可以帮助我们快速地找到所需的数据,提供有效的数据访问和处理方式。

常用的查找算法有以下几种:

  1. 线性查找:也称为顺序查找,是最简单直接的查找算法。它从数据结构的起始位置开始,逐个比较元素,直到找到目标元素或遍历完整个数据结构。时间复杂度为O(n),其中n是数据结构中元素的个数。

  2. 二分查找:适用于已排序的数据结构(如有序数组)。它将目标元素与中间元素进行比较,根据比较结果确定目标元素在左半部分还是右半部分,并继续在该部分进行查找。通过每次排除一半的元素,二分查找能够快速定位目标元素。时间复杂度为O(log n)。

  3. 哈希表查找:利用哈希表数据结构实现的查找算法。哈希表根据关键字的哈希值存储元素,并提供快速的查找操作。通过将关键字映射到哈希表的索引位置,可以在常数时间内(平均情况下)找到目标元素。哈希表查找的平均时间复杂度是O(1),但在最坏情况下可能达到O(n)。

  4. 二叉搜索树查找:利用二叉搜索树数据结构实现的查找算法。二叉搜索树是一颗有序二叉树,对于树中的每个节点,左子树中的所有节点的值小于当前节点的值,右子树中的所有节点的值大于当前节点的值。通过比较目标值与当前节点的值,可以决定继续在左子树还是右子树中进行查找。二叉搜索树查找的平均时间复杂度为O(log n),但在最坏情况下可能达到O(n)。

  5. 平衡二叉搜索树查找:为了解决二叉搜索树在某些情况下退化成链表的问题,引入了平衡二叉搜索树(如AVL树、红黑树)。这些树通过自平衡机制保持树的平衡性,从而保证查找操作的平均时间复杂度为O(log n)。

  6. 插值查找:是二分查找的变体,用于在有序数组中进行查找。它不像二分查找每次都将查找范围一分为二,而是根据目标值与数组元素的分布情况,在靠近目标值的位置更有可能找到目标元素。最好情况下的时间复杂度为O(1),最坏情况下为O(n),平均情况下为O(log log n)。

😊2. C++实现

#include <iostream>
#include <vector>
#include <algorithm>
#include <unordered_map>// 线性查找
int linearSearch(const std::vector<int>& arr, int target) {for (int i = 0; i < arr.size(); i++) {if (arr[i] == target) {return i;}}return -1;  // 没有找到目标元素
}// 二分查找(针对已排序数组)
int binarySearch(const std::vector<int>& arr, int target) {int left = 0;int right = arr.size() - 1;while (left <= right) {int mid = left + (right - left) / 2;if (arr[mid] == target) {return mid;} else if (arr[mid] < target) {left = mid + 1;} else {right = mid - 1;}}return -1;  // 没有找到目标元素
}// 哈希表查找
int hashTableSearch(const std::unordered_map<int, int>& table, int target) {auto it = table.find(target);if (it != table.end()) {return it->second;}return -1;  // 没有找到目标元素
}int main() {std::vector<int> arr = {10, 25, 4, 15, 8, 36};// 线性查找int target1 = 15;int index1 = linearSearch(arr, target1);if (index1 != -1) {std::cout << "线性查找:" << target1 << " 的索引为 " << index1 << std::endl;} else {std::cout << "线性查找:没有找到 " << target1 << std::endl;}// 二分查找前需要将数组排序std::sort(arr.begin(), arr.end());// 二分查找int target2 = 25;int index2 = binarySearch(arr, target2);if (index2 != -1) {std::cout << "二分查找:" << target2 << " 的索引为 " << index2 << std::endl;} else {std::cout << "二分查找:没有找到 " << target2 << std::endl;}// 哈希表查找std::unordered_map<int, int> table;for (int i = 0; i < arr.size(); i++) {table[arr[i]] = i;}int target3 = 8;int index3 = hashTableSearch(table, target3);if (index3 != -1) {std::cout << "哈希表查找:" << target3 << " 的索引为 " << index3 << std::endl;} else {std::cout << "哈希表查找:没有找到 " << target3 << std::endl;}return 0;
}

编译运行:

g++ -o main main.cpp && ./main
线性查找:15 的索引为 3
二分查找:25 的索引为 4
哈希表查找:8 的索引为 1

在这里插入图片描述

以上。

http://www.ritt.cn/news/19745.html

相关文章:

  • 网站首页建设图文教程中国百强县市榜单
  • 网页设计网站查询网站流量
  • 完全网络营销网站网络暴力事件
  • 商业网站建设教程百度搜索指数排名
  • win10虚拟机做网站怎么把广告发到各大平台
  • 订制企业网站app运营
  • 做网站教程 第一课论坛优化seo
  • 网站建设基本知识聊城今日头条最新
  • 济南建筑工程网企业网站优化报告
  • 安阳门户网站2023年5月最新疫情
  • 西安做网站哪家好合肥百度关键词推广
  • 建应用网站网站快速排名
  • 做网站哪家最好微信营销成功案例8个
  • 2018网站外链怎么做app推广接单平台有哪些
  • 免费的wordpress怎样提高浏览量seo是免费的吗
  • 建设网站建设目的意义电商平台引流推广
  • 政府网站都是谁做的网站注册账号
  • 东莞网站建设套餐什么是口碑营销
  • 济南优化seo网站建设谷歌自然排名优化
  • 上海营销网站制作网络运营培训
  • dw 8做的网站怎么上传2021小说排行榜百度风云榜
  • 淘宝网页版手机版工具seo
  • 宁波网站建设哪家公司好榜单优化
  • 网站外链建设需要考核2024很有可能再次封城吗
  • jsp做网站注册页面seo顾问是什么职业
  • 番禺做网站费用市场营销推广方案模板
  • 网站规划的认识山东关键词快速排名
  • 做游戏音频下载网站国际新闻稿件
  • 湖北省政府网站集约化建设外贸网站有哪些平台
  • python php 网站开发乔拓云网站注册