最终想实现如果没有查找到该数,则“输出未能查找到该数”,没有成功- //折半查找代码实现
- #include <stdio.h>
- int bisearch(int arr[],int key,int len){
- int low = 0;
- int high = len-1;
- //折半查找需要定义最低位和最高位,取两数的中间值将已知数与其作比较
- //若已知数大于mid数,则令low = mid+1,开始新一轮查找
- //若已知数小于mid数,则令high = mid-1,来是新一轮查找
- //直至找到该数
- while (low <= high){
- int mid = (low+high)/2;
- if(key == arr[mid]){
- printf("为您找到该数,为a[%d] = %d\n",mid,key);
- break;
- }else if(key > arr[mid]){
- low = mid + 1;
- }else if(key <arr[mid]){
- high = mid - 1;
- }
- }
- return low;
- }
- int main(){
- // 0 1 2 3 4 5 6 7 8 9
- int a[] = {1,3,5,7,8,12,23,56,58,89};
- int x ;
- int len = sizeof(a)/sizeof(int);
- printf("请输入您需要查找的数:\n");
- scanf("%d",&x);
- bisearch(a,x,len);
- return 0;
- }
复制代码
|
|