折半查詢法&二分查詢法
阿新 • • 發佈:2021-11-28
1 int main(){ 2 int arr[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }; 3 int sz = sizeof(arr) / sizeof(arr[0]);用於計算陣列中的元素個數 4 int left = 0,right =sz-1 ; 5 int k = 7; 6 while (left <= right)只有當兩個數之間有交集是才能運算 7 { 8 int mid = (left + right) / 2; 9 if (arr[mid] > k) 10 { 11 right = mid - 1; 12 } 13 elseif (arr[mid] < k) 14 { 15 left = mid + 1; 16 } 17 else 18 { 19 printf("找到了,下標是%d\n", mid); 20 break; 21 } 22 } 23 if (left>right) 24 printf("找不到\n"); 25 return 0; 26 }//結果為:找到了下標是6
思路:表中元素是按升序排列(一定是按照順序排列),將表中間位置(mid)記錄的