二分法查找
#include<stdio.h>//二分查找binary search int main() { //定义数组 int array[]={0,5,13,19,22,41,55,68,72,81,98}; int targetNumber,isFound=0; //要查找的数字,查找结果。 int i,index;//存放找到的数字的下标 int low,high,mid; //标识搜索区间的3个指针 int arrLength = sizeof(array)/sizeof(array[0]); //获得数组长度 printf("请输入在以下数组中要查找的数字:\n"); for(i=0;i<arrLength;i++) { printf("%d ",array[i]); } scanf("%d",&targetNumber); low=0; high=arrLength-1;
index=-1; while(low<=high) { mid=(high+low)/2; if(array[mid]==targetNumber) { isFound=1;index=mid+1;break; } else if(array[mid]<targetNumber) { low=mid+1; } else if(array[mid]>targetNumber) { high=mid-1; } } if(isFound==0) printf("没有找到数字%d。\n",targetNumber); else printf("找到了,%d是第%d个数字\n",targetNumber,index); return 0; }