#include <stdio.h> //LENGTH 为有序表长度 #define LENGTH 100 // int binarySearch(int a[], int value, int len){ int low = 0; int high = len - 1; int mid = 0; while(low <= high){ mid = low + (high - low) / 2; //注意此处,如果写为mid=(low+high)/2的话,容易导致溢出。 if(value == a[mid]){ return mid; }else{ //printf("low:%d, mid:%d, high:%d \n", low, mid, high); if(value < a[mid]){ high = mid - 1; }else{ low = mid + 1; } } } return -1; } int main(){ int array[LENGTH] = {0}; int i = 0; int length = 0; int value; //测试 while(scanf("%d %d", &length, &value)!=EOF){ for(i = 0; i < length; i++){ array[i] = 10 * i; } printf("%d \n", binarySearch(array, value, length)); } return 1; }
二分查找
最新推荐文章于 2023-05-28 13:59:52 发布