zoukankan      html  css  js  c++  java
  • 二分查找

    1.二分查找也叫折半查找,它是对于一组有序(升序或降序)数列来说的,举例:猜数字游戏 ,随机给出1-100内的一个数字,请猜出这个数字 那我们不能随机没有规律的去猜,这时考虑二分查找的思想

    • 例如38
    • 第一次猜50,告诉你猜大了,那么此时就在1-50内折半
    • 第二次猜25,告诉你猜小了,那么此时就在26-49内折半…以此类推
    • 这就是二分查找的思想。

    2.给出一个升序数组arr[10]={0,1,2,3,4,5,6,7,8,9},要求用二分查找的方法找出4。

    • 那么第一次我们折半找到5,5>4
    • 然后进行第二次折半找到2,2<4
    • 进行第三次折半找到3,3<4
    • 最后一次我们就找到了目标数字4

    3.C语言代码:

    #include<stdio.h>
    int binary_search(int arr[], int left, int right, int  num)//二分查找函数 给出做右下标在此范围内找
    {
        int mid = 0;
        while (left <= right)
        {
            mid = left + ((right - left) >> 1);//这样求中间的数的下标安全>>为右移符号,右移1等于除以2
            if (num <arr[mid])
                right = mid;
            else if (num > arr[mid])
                left = mid;
            else
                return mid;
        }
        return -1;
    }
    
    int main()
    {
        int arr[10] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
        int num = 3;
        int tmp = binary_search(arr, 0, 9, num);
        if (tmp!=-1)
            printf("exist the number is:%d", tmp);
        else
            printf("no exist!");
        return 0;
    }
    
  • 相关阅读:
    (82)zabbix如何选择适合的监控类型
    (80)zabbix性能优化中的几个建议
    (79)zabbix key总是not supported的解决方法
    (78)zabbix值缓存(value cache)说明
    Centos7搭建docker仓库
    centos7安装docker
    Win10调整MTU值
    nginx配置ssl证书
    CentOS7.6配置do.cker和K.B.S
    RAID阵列盘有一块状态变为外来处理方法
  • 原文地址:https://www.cnblogs.com/always-fight/p/8821468.html
Copyright © 2011-2022 走看看