zoukankan      html  css  js  c++  java
  • C语言编程 在整型有序数组中查找二分法(折半法)想要的数字并且返回下标...

    遇到“有序”数组中查找元素类的题,优先考虑折半查找(二分查找)

    做法核心是利用所定义的下标left和right与mid(由计算得来)下标的比较来逐渐缩短查找范围,达到一个阈值后即为找到。

    源代码如下:

    #include<stdio.h>
    #include<stdlib.h>
    
    int search(int a[], int x, int left, int right)//定义二分查找函数
    {
        while (left <= right)
        {
            int mid = (left + right) / 2;//计算当前查找范围中间元素的下标
            if (x < a[mid])
            {
                right = mid - 1;//若在中间元素的左边则移动right下标
            }
            if (x>a[mid])
            {
                left = mid + 1;//若在中间元素的右边则移动left下标
            }
            else
            {
                return mid;//说明找到元素
            }
    
        }
        return 0;
    }
    
    int main()
    {
        int i, m, n;
        int a[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };//可事先定义也可让用户输入
        int left = 0, right = sizeof(a) / sizeof(a[0]);
        printf("请输入你要查找的数字:
    ");
        scanf("%d", &n);
        m = search(a, n, left, right);
        if (m)
        {
            printf("找到了,下标为%d
    ",m);
        }
        else
            printf("找不到
    ");
        system("pause");
        return 0;
    }

    运行结果:

    C语言编程  在整型有序数组中查找二分法(折半法)想要的数字并且返回下标
    C语言编程  在整型有序数组中查找二分法(折半法)想要的数字并且返回下标
  • 相关阅读:
    图像按钮
    提交按钮
    文件上传域
    Python创建虚拟环境
    Typecho使用技巧
    面向对象
    Python语法入门
    Python 基础数据类型
    与用户交互
    MySQL5.7安装教程
  • 原文地址:https://www.cnblogs.com/Kaniso-Vok/p/13756268.html
Copyright © 2011-2022 走看看