分支和循环练习-二分法-在有序数组中找到一个数

在一个有序数组中查找某个具体数字n

123456789101112131415161718
#include <stdio.h>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
#include <stdio.h>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;}
🔍 ×