介绍
折半查找,又称作二分查找。这个查找的算法的特点,就是,要求数据要是有序的。
1 ,存储结构一定是顺序存储
2 ,关键字大小必须有序排列
算法思想:折半查找只能在有序数列中进行,将待查找的数据与有序数列(递增)中间的元素进行比较,如果相等,则找到;如果待查找的数据大于中间的元素的值,那么再从数组的后一半元素中进行查找,否则,从前一半元素中进行查找;若折半后都找不到,则输出“没找着”等提示信息。
nums记录查找次数
#include<iostream>
#include<cstdio>
using namespace std;
int nums=0;
int found=0;
int Search(int a[],int key,int length){
int low=0;
int high=length-1;
while(low<=high){
int mid=(low+high)/2;
cout<<"low="<<low<<"mid="<<mid<<"high="<<high<<endl;
if(key==a[mid]){
found=1;
nums++;
break;
}
else if(key<a[mid]){
high=mid-1;
nums++;
}
else{
low