C语言——二分查找

简介: 在一个有序的数组中查找元素,要求时间复杂度为logN

在一个有序的数组中查找元素,要求时间复杂度为logN
典型的二分查找,前提是有序,让目标数跟中间数比较,如果目标数大,则说明数在右边,反则,在左边

代码如下

//二分查找 
#include<stdio.h>
int main()
{
    int right, left, num,count ,arr[] = {1,2,3,4,5,6,7,8,9,10};
    right = sizeof(arr) / sizeof(arr[0]);  //计算数组长度,把值赋给right
    left = 0;
    scanf("%d", &num);
    while (left <= right)    //如果left>right说明没有这个元素
    {
        count = (right + left) / 2;        //取中间元素来比较
        if (num > arr[count])                //要找元素大于中间元素,就把left重新赋值成中间往后一个元素
            left = count + 1;
        else if (num < arr[count])            //要找元素小于中间元素,就把right重新赋值成中间往前一个元素
            right = count - 1;
        else                                    //在left<=right的条件下不满足上面的if,则说明找到了
        {
            printf("找到了,下标为%d\n", count);
            break;
        }
        if (left > right)
        {
            printf("找不到\n");
        }
 
    }
    return 0;
}

运行结果>

image.png

相关文章
|
7月前
|
算法 程序员 数据处理
算法与人生 揭秘C语言中高效搜索的秘诀——二分查找算法详解
算法与人生 揭秘C语言中高效搜索的秘诀——二分查找算法详解
|
7月前
|
存储 算法 搜索推荐
C语言与人生:数组交换和二分查找
C语言与人生:数组交换和二分查找
|
2月前
|
存储 算法 C语言
【C语言】二分查找算法
【C语言】二分查找算法
|
6月前
|
存储 算法 C语言
二分查找算法的概念、原理、效率以及使用C语言循环和数组的简单实现
二分查找算法的概念、原理、效率以及使用C语言循环和数组的简单实现
|
6月前
|
C语言
C语言----数组----二分查找
C语言----数组----二分查找
|
6月前
|
C语言
C语言--通过函数实现二分查找
C语言--通过函数实现二分查找
|
7月前
|
C语言 数据安全/隐私保护
【C语言】分支和循环的应用(二分查找、字符移动、模拟登录界面)
【C语言】分支和循环的应用(二分查找、字符移动、模拟登录界面)
46 0
|
7月前
|
算法 C语言
【C语言】二分查找
【C语言】二分查找
|
7月前
|
C语言
C语言——二分查找(在万千之中快速找到你)
C语言——二分查找(在万千之中快速找到你)
42 0
|
7月前
|
编译器 程序员 C语言
【C语言】变长数组,二分查找和数组之间自动替换的实现
【C语言】变长数组,二分查找和数组之间自动替换的实现