查找--二分查找
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}
二分查找的性能分析及演示:
以上是关于查找--二分查找的主要内容,如果未能解决你的问题,请参考以下文章