int search(int* arr, int left ,int right ,int parameter) { // int mid = (left + right)/2; // 看了鹏哥的视频,发现这样会更好一点,防止超出。 int mid = left + (right - left)/2; if(arr[mid] == parameter) { return mid; } else if(arr[mid] > parameter) { right = mid - 1; return search(arr,left,right,parameter); } else if(arr[mid] < parameter) { left = mid + 1; return search(arr,left,right,parameter); } } int BinarySearch(int* arr, int len, int parameter) { int left = 0; int right = len -1; return search(arr,left,right,parameter); } int main() { int arr[] = {1,2,3,4,5,6,7,8,9,10}; int len = sizeof(arr)/ sizeof(arr[0]); int parameter = 4; int index = BinarySearch(arr,len,parameter); printf("%d 对应的索引值为:%d\n",parameter,index); return 0; }
学习C语言---二分查找
于 2024-07-01 19:22:28 首次发布