折半查找法也称二分查找法,是一种快捷有效的查找关键字的方法。在所需查找数据量较大时,可高效缩短用循环遍历的查找时间,大大提升机器效率;但其缺点是所需查找数组必须是有序的,下以升序为例。
例:有一个数组arr,里面升序存放了10个整数,arr[10]={2,3,5,7,8,10,12,15,19,21} ,任意输入一个数字,用折半查找法找到其位于数组中的位置。如果n不属于数组A,显示错误提示。
#include<stdio.h>
int Search(int *arr,int length,int key)
{
int low=0;
int high=length-1;
int mid;
while(low<=high)
{
mid=(low+high)/2;
if(arr[mid]==key)
{
return mid;
}
else if(arr[mid]<key)
{
low=mid+1;
}
if(arr[mid]>key)
{
high=mid-1;
}
}
return -1;
}
int main()
{
int arr[10]="2,3,5,7,8,10,12,15,19,21";
printf("该数在数组中下标为%d\n",Search(arr,10,2));
printf("该数在数组中下标为%d\n",Search(arr,10,21));
printf("该数在数组中下标为%d\n",Search(arr,10,11))
return 0;
}