首页 > 编程语言 >查找算法

查找算法

时间:2022-10-23 22:09:20浏览次数:55  
标签:结点 右子 ## 复杂度 元素 算法 查找

总结常用的查找算法,针对不同的情况,能够反应出哪种数组结构是效率最快的 ##顺序查找

条件:无序或有序队列。

原理:按顺序比较每个元素,直到找到关键字为止。

时间复杂度:O(n) ##二分查找(折半查找)

条件:有序数组

原理:查找过程从数组的中间元素开始,如果中间元素正好是要查找的元素,则搜素过程结束; 如果某一特定元素大于或者小于中间元素,则在数组大于或小于中间元素的那一半中查找,而且跟开始一样从中间元素开始比较。 如果在某一步骤数组为空,则代表找不到。 这种搜索算法每一次比较都使搜索范围缩小一半。

时间复杂度:O(logn)

##二叉排序树查找

条件:先创建二叉排序树: 1. 若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值; 2. 若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值; 3. 它的左、右子树也分别为二叉排序树。

原理: 在二叉查找树b中查找x的过程为: 1. 若b是空树,则搜索失败,否则: 2. 若x等于b的根节点的数据域之值,则查找成功;否则: 3. 若x小于b的根节点的数据域之值,则搜索左子树;否则: 4. 查找右子树。

时间复杂度:O(log2(n))

##哈希表法(散列表)

条件:先创建哈希表(散列表)

原理:根据键值方式(Key Value)进行查找,通过散列函数,定位数据元素。

时间复杂度:几乎是O(1),取决于产生冲突的多少。

##分块查找

思想:顺序查找和二分查找的结合。

原理:将n个数据元素"按块有序"划分为m块(m ≤ n)。 每一块中的结点不必有序,但块与块之间必须"按块有序";即第1块中任一元素的关键字都必须小于第2块中任一元素的关键字; 而第2块中任一元素又都必须小于第3块中的任一元素,……。 然后使用二分查找及顺序查找。

时间复杂度:介于O(n) 和O(logn)之间。

标签:结点,右子,##,复杂度,元素,算法,查找
From: https://blog.51cto.com/u_15522232/5787592

相关文章

  • 单链表插入和删除一个节点的伪代码算法
    插入设ai-1节点为pai+1节点为q插入节点为t则p-->t-->next=q-->next删除设ai-1节点为pai+1节点为q删除的字节为tp-->next=t-->nextfree(t)参考链接https://bl......
  • c++算法竞赛常用板子集合(持续更新)
    前言本文主要包含算法竞赛一些常用的板子,码风可能不是太好,还请见谅。后续会继续补充没有的板子。当然我太菜了有些可能写不出来T^T稍微有些分类但不多,原谅我QwQ建议Ct......
  • 基于miu小波变换的人体步态数据检测和识别算法matlab仿真
    目录一、理论基础3.2.1加速度计3.2.2陀螺仪 3.3基于IMU设备的人体步态数据的采集二、MATLAB仿真程序三、仿真结果一、理论基础在进行数据采集的过程中,需要根据实......
  • leetcode1002-查找共用字符
    1002.查找共用字符classSolution{public:vector<string>commonChars(vector<string>&words){intsize=words.size();vector<string>res......
  • MD5 哈希加密算法 - C++ 实现
    MD5加密算法-C++实现写在前头:还在学习中!整个文档写的很匆忙,肯定还有很多不周到的地方.欢迎在评论中提出你的宝贵意见!!算法背景BackgroundMD5消息摘要算法......
  • 贪心算法 455
    455.分发饼干classSolution{publicintfindContentChildren(int[]g,int[]s){Arrays.sort(g);//孩子列表Arrays.sort(s);//饼干列表......
  • 初识算法之美
    本篇是学习了《趣学算法(第2版)》第一章之后总结的。对算法的理解:计算机虽然可以高效的进行运算,但是有很多问题拼的不是算力,而是策略。如果没有策略的去计算,那再强的运算......
  • Java实现7种常见密码算法
    Java加密体系JCAJava抽象了一套密码算法框架JCA(JavaCryptographyArchitecture),在此框架中定义了一套接口与类,以规范Java平台密码算法的实现,而Sun,SunRsaSign,SunJCE这些则......
  • 逻辑知识:冒泡排序算法
     前言在软件开发中,冒泡排序对于一些软件开发工程师很常用,而且它也是一种比较经典的算法之一,那么本节就来说说这个冒泡排序。冒泡排序概念冒泡排序(BubbleSort),是一种计算......
  • 详解决策树-决策树的生成ID3算法和C4.5算法【十分钟机器学习系列笔记】
    视频作者:简博士-知乎;简博士的个人空间_哔哩哔哩_bilibili链接:【合集】十分钟机器学习系列视频《统计学习方法》_哔哩哔哩_bilibili原书:《统计学习方法》李航 ID......