在一个有序数组中查找某个具体数字n
123456789101112131415161718 | int main() { int arr[]={1,2,3,4,5,6,7,8,9,10}; int k = 7; //写代码,在数组中找到7 int i = 0; int sz = sizeof(arr)/sizeof(arr[0]);//算出数组中元素个数 for (i=0; i<sz; i++) { if (k == arr[i]) { printf("找到了,下标是:%d\n",i); break; } } if (i == sz) { printf("找不到"); } return 0;} |
使用二分法-在有序数组中找到一个数
使用二分法-查找效率高
123456789101112131415161718192021222324252627 | int main() { int arr[]={1,2,3,4,5,6,7,8,9,10}; int k = 11; //要查找的数字 int sz = sizeof(arr)/sizeof(arr[0]);//算出数组中元素个数 int left = 0; int right = sz - 1;//右下标,就是元素个数减1 while (left <= right) { int mid = (left + right) / 2; if (arr[mid] > k) { right = mid - 1; } else if(arr [mid] < k) { left = mid + 1; } else { printf("找到了,下标是:%d\n",mid); break; } } if (left > right) { printf("没找到"); } return 0;} |