基本概念:

二分查找又叫折半查找,是一种简单又快速的查找算法;它对要查找的序列有两个要求:一是该序列必须是有序的,即该序列中所有元素都是按照大小关系排好顺序的,升序和降序都可以,二是该序列必须是顺序存储的.

算法原理:

只要数组中包含要查找的这个值,假设为x,那么可以通过不断与x比较从而缩小包含x的范围,最终就可以找到它,一开始,范围覆盖整个数组,将数组中间的元素与x相比较,将包含x的范围缩小为原来的一半,就这样反复比较,将包含x的范围不断进行缩小,最终就能在数组中找到x.或者没有找到,返回空.

代码实现:

写在主函数内:

#include<stdio.h>
int main()
{int arr[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };int left = 0;int right = sizeof(arr) / sizeof(int) - 1;int middle = 0;int num = 0;printf("请输入你要查找的值\n");scanf("%d", &num);while (left <= right){middle = (left + right) / 2;if (arr[middle] > num){right = middle - 1;}else if (arr[middle] < num){left = middle + 1;}else{printf("找到了 下标为%d", middle);break;}}if (left > right){printf("没找到\n");}return 0;
}

写成二分查找函数:

int bin_search(int arr[], int left, int right, int key)
{int mid = 0;while (left <= right){mid = (left + right)>>1;if (arr[mid] > key){right = mid - 1;}else if (arr[mid] < key){left = mid + 1;}else{return mid;//找到了返回下标}}return -1;//找不到
}

运行结果:

用图解来描述具体实现过程:

二分查找算法【C语言实现】相关推荐

  1. 二分查找算法c语言伪代码,算法-二分搜索算法

    算法:二分搜索算法(折半查找算法) 时间复杂度: 二分搜索算法概述 二分搜索算法伪代码 二分搜索算法实现 二分搜索算法概述 二分搜索算法,也称折半查找算法,即在一个有序数组中查找某一个特定元素.整个搜 ...

  2. 二分查找算法-C语言实现

    二分查找介绍 二分查找也称折半查找(Binary Search),是一种效率较高的查找方法. 二分查找适用场景 有序不重复的数组中元素的查找. 代码实现 int findNumIndex(int *a ...

  3. C语言二分查找算法[基础算法]

    该算法一般适用于查找数组元素 二分查找又称折半查找,优点是比较次数少,查找速度快,平均性能好,占用系统内存较少; 其缺点是要求待查表为有序表,且插入删除困难. 适用于不经常变动而查找频繁的有序列表. ...

  4. 二分查找算法的一点改进

    在计算机科学中,二分查找,是一种在有序数组中查找某一特定元素的搜索算法.这种搜索算法每一次比较都使搜索范围减半.第一篇二分查找的论文发表于1946年,然而第一个没有bug的二分查找算法却是在1962年 ...

  5. 算法总结-二分查找算法

    二分查找也称折半查找(Binary Search),是一种效率较高的查找方法.该算法要求线性表必须采用顺序存储结构,而且表中元素按关键字有序排列.如果一个序列是无序的或者是链表,那么该序列就不能使用二 ...

  6. 二分查找算法(折半查找算法)

    二分查找算法(折半查找算法) 二分查找又称折半查找.二分搜索.折半搜索等,是在分治算法基础上设计出来的查找算法,对应的时间复杂度为O(logn). 二分查找算法仅适用于有序序列,它只能用在升序序列或者 ...

  7. 使用 Copilot 编写和翻译二分查找算法

    在这篇博客文章中,我将使用 Copilot 和 Copilot Labs 来编写并理解二分查找算法. 先决条件: 确保您已安装 GitHub Copilot 扩展程序和 GitHub Copilot ...

  8. 二分查找算法的两种实现方式:非递归实现和递归实现

    二分查找的条件是对一组有序数组的查找,这一点很容易忘记,在使用二分查找的时候先要对数组进行排序. 先说一下二分查找的思路:一个有序数组,想要查找一个数字key的下标,首先算出中间下标mid,利用mid ...

  9. 二分查找算法为什么要先排序

    其实二分查找算法就和我们在一个英文字典中找一个单词一样,比如要找middle这个单词,先把字典翻到大概中间的位置,那么现在字典就被分成两个部分了,middle这个单词要么在第一个部分,要么在第二个部分 ...

  10. LeetCode面试刷题技巧-二分查找算法代码思路解析

    二分查找的思想 提及二分查找算法,我想大部分人都不陌生,就算不是学计算机的,基本上也都使用过二分查找的思想,不信的话,且听我慢慢为你道来. 不知道你有没有玩过这样一个游戏,猜数字.就是说一个人心里想了 ...

最新文章

  1. 【转】Office 2003 EXCEL多窗口打开
  2. .net程序中资源文件的保护办法探讨
  3. tf报错之raise TypeError(“pred must not be a Python bool“)
  4. web中的cookie管理
  5. 前端学习(1487):axios介绍
  6. mysql cursor 嵌套_MYSQL 存储过程多游标嵌套遍历
  7. TOMCAT 连接池数据库密码加密方法
  8. python编程(pyautogui库)
  9. 数据库连接池php-cp介绍
  10. JQuery1.11版本对prop和attr接口的含义分离导致问题分析
  11. 一款,整合百度翻译api跟有道翻译api的翻译君
  12. 华为手机刷机后显示无服务器,华为手机刷机后,无法开机怎么办?
  13. Python人工智能学习路线(长篇干货)
  14. 【C语言】如何安装 Visual studio 2022 ?
  15. Make Product Equal One(思维)
  16. vue 组件封装——可自由拖拽移动的盒子
  17. KITTI数据集-百度云盘
  18. CAN控制器-配置过滤器
  19. http://blog.sina.com.cn/s/blog_ebbe6d790102vmez.html
  20. 酷科技 | Amabrush电动牙刷:10秒就可以完成刷牙

热门文章

  1. 佛系架构图秒懂OAuth2
  2. 数美科技推出未成年人网络环境保护方案 护航未成年人健康成长
  3. h5优秀控件_推荐六款炫酷的HTML5效果插件
  4. ORA-00918: 未明确定义列(嵌套查询容易犯的错误)
  5. java 两位小数_java保留两位小数及多位小数的方法 | 夕辞
  6. 超好看的二次元照片墙源码
  7. Exynos4412搭建最小文件系统
  8. Docker部署ES(elasticsearch)+Kibana
  9. git tag :gpg: skipped “xxx@xxx“: secret key not available
  10. 架构师如何教小学生写作文