五种查找算法总结

原创 2015年11月20日 10:51:45


 

一、顺序查找

  条件:无序或有序队列。

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

  时间复杂度:O(n)

二、二分查找(折半查找)

  条件:有序数组

  原理:查找过程从数组的中间元素开始,如果中间元素正好是要查找的元素,则搜素过程结束;

     如果某一特定元素大于或者小于中间元素,则在数组大于或小于中间元素的那一半中查找,而且跟开始一样从中间元素开始比较。

     如果在某一步骤数组为空,则代表找不到。

     这种搜索算法每一次比较都使搜索范围缩小一半。

  时间复杂度:O(logn)

三、二叉排序树查找

  条件:先创建二叉排序树:

      1. 若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值;

      2. 若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值;

      3. 它的左、右子树也分别为二叉排序树。

  原理:

    在二叉查找树b中查找x的过程为:

    1. 若b是空树,则搜索失败,否则:

    2. 若x等于b的根节点的数据域之值,则查找成功;否则:

    3. 若x小于b的根节点的数据域之值,则搜索左子树;否则:

    4. 查找右子树。

  时间复杂度:  

四、哈希表法(散列表)

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

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

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

五、分块查找

  原理:将n个数据元素"按块有序"划分为m块(m ≤ n)。

     每一块中的结点不必有序,但块与块之间必须"按块有序";即第1块中任一元素的关键字都必须小于第2块中任一元素的关键字;

     而第2块中任一元素又都必须小于第3块中的任一元素,……。

  然后使用二分查找及顺序查找。

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

查找算法总结(2)--哈希表

哈希表和哈希查找

查找算法总结(1)--概括

查找算法总结

字串查找算法总结及MS的strstr源码

http://www.cnblogs.com/ziwuge/archive/2011/12/09/2281455.html 首先来说说字串的查找,即就是在一个指定的字串A中查找一个指定字串B出现的位...

查找算法总结(顺序、折半、分块、二叉排序树)

一、基本概念: 1、  列表:待搜索的数据集合。 2、  关键字:要查找的那个数据。 3、  查找,检索:一种算法过程。给出一个key值(关键字),在含有若干个结点的序列中找出它。 4、  查找表:同...

查找算法的总结

查找算法从总体上来说可以分为四类,它们分别是顺序查找,二分查找,分块查找以及散列表。下面简单的介绍一下各种查找算法。 (一)顺序查找 原理:让关键字与队列中的数从第一个(或最后一个)开始逐个进行比...

查找算法总结——面试(一)

==================== 顺序查找算法 ==================== 1. 算法描述   顺序比较即可。 2. 平均查找长度   (n+1)/2, 其中n为...

各种二分查找算法总结

1. 最基本的二分查找算法: 在已排好序的vector中查找是否存在target bool findData(vector &nums, int target){ if(nums.size()=...

查找算法总结

查找算法集:顺序查找、二分查找、插值查找、动态查找(数组实现、链表实现) // search.cpp : Defines the entry point for the console appl...

查找算法总结之二(动态查找表)

查找树查找算法总结(二),动态查找表

查找算法总结(3)--二叉查找树

二叉查找树
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:五种查找算法总结
举报原因:
原因补充:

(最多只允许输入30个字)