查找--二分查找

Posted wawees

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了查找--二分查找相关的知识,希望对你有一定的参考价值。

二分查找需要在有序表上面实现(有序表,序列已经按照从大到小,或者从小到大进行了元素的排序)。虽然查询速度比较快,但是只能适应顺序存储结构,平均查找性能和最坏查找性能也相当接近。

将带查找的关键字与有序表中间位置的记录进行比较,若相等,查找成功;

若小于,则只可能在有序表的前半部分;

若大于,则只可能在有序表的后半部分。

重复以上步骤进行查找,每次查找都将范围缩小一半。

查找过程中,使用low指示待查找的区间的下界,high指示待查找区间的上界,mid=(low+high)/2。如果mid为小数,则下向取整。

当low>high或者high<low时,宣布查找失败。

 1int BinarySearch(DataType SL[],KeyType key,int n){
2    int low=1;
3    int high=n; /*n为有序表SL的长度*/
4    while(low<high){
5        mid = (low+high)/2;
6        if(key==SL[mid].key)
7            return mid;
8        else if (key>SL[mid].key)
9            low=mid+1;
10        else high=mid+1;
11    }
12    return 0;
13}


二分查找的性能分析及演示:




以上是关于查找--二分查找的主要内容,如果未能解决你的问题,请参考以下文章

二分查找常见套路与分析

二分查找代码

代码题(12)— 二分查找

「算法笔记」一文摸秃二分查找

顺序查找和二分查找代码

PHP实现二分查找算法(代码详解)