折半查找算法思想:
在有序序列中,取中间元素作为比较对象,若给定值与中间元素的要查找的数相等,则查找成功;
若给定值小于中间元素的要查找的数,则在中间元素的左半区继续查找;
若给定值大于中间元素的要查找的数,则在中间元素的右半区继续查找。
重复上述查找过 程,直到查找成功,或所查找的区域无数据元素,查找失败。
程序: #include<stdio.h> int main() { int arr[5]={10,11,13,15,46,}; int key = 0; int sz = sizeof(arr)/sizeof(arr[0]); int left = 0,right = sz-1; int mid = 0; printf("请输入要查找的数:"); scanf("%d",&key); while(left<=right) { mid = left+(right-left)/2; if(key==arr[mid]) break; else if(key>arr[mid]) { left = mid+1; } else right =mid-1; } if(left<=right) printf("找到了,下标为%d",mid); else printf("找不到"); return 0; }
![]()