折半查找法也称二分查找法,是一种快捷有效的查找关键字的方法。在所需查找数据量较大时,可高效缩短用循环遍历的查找时间,大大提升机器效率;但其缺点是所需查找数组必须是有序的,下以升序为例。
例:有一个数组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;
}