二分查找算法【C语言实现】
基本概念:
二分查找又叫折半查找,是一种简单又快速的查找算法;它对要查找的序列有两个要求:一是该序列必须是有序的,即该序列中所有元素都是按照大小关系排好顺序的,升序和降序都可以,二是该序列必须是顺序存储的.
算法原理:
只要数组中包含要查找的这个值,假设为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语言实现】相关推荐
- 二分查找算法c语言伪代码,算法-二分搜索算法
算法:二分搜索算法(折半查找算法) 时间复杂度: 二分搜索算法概述 二分搜索算法伪代码 二分搜索算法实现 二分搜索算法概述 二分搜索算法,也称折半查找算法,即在一个有序数组中查找某一个特定元素.整个搜 ...
- 二分查找算法-C语言实现
二分查找介绍 二分查找也称折半查找(Binary Search),是一种效率较高的查找方法. 二分查找适用场景 有序不重复的数组中元素的查找. 代码实现 int findNumIndex(int *a ...
- C语言二分查找算法[基础算法]
该算法一般适用于查找数组元素 二分查找又称折半查找,优点是比较次数少,查找速度快,平均性能好,占用系统内存较少; 其缺点是要求待查表为有序表,且插入删除困难. 适用于不经常变动而查找频繁的有序列表. ...
- 二分查找算法的一点改进
在计算机科学中,二分查找,是一种在有序数组中查找某一特定元素的搜索算法.这种搜索算法每一次比较都使搜索范围减半.第一篇二分查找的论文发表于1946年,然而第一个没有bug的二分查找算法却是在1962年 ...
- 算法总结-二分查找算法
二分查找也称折半查找(Binary Search),是一种效率较高的查找方法.该算法要求线性表必须采用顺序存储结构,而且表中元素按关键字有序排列.如果一个序列是无序的或者是链表,那么该序列就不能使用二 ...
- 二分查找算法(折半查找算法)
二分查找算法(折半查找算法) 二分查找又称折半查找.二分搜索.折半搜索等,是在分治算法基础上设计出来的查找算法,对应的时间复杂度为O(logn). 二分查找算法仅适用于有序序列,它只能用在升序序列或者 ...
- 使用 Copilot 编写和翻译二分查找算法
在这篇博客文章中,我将使用 Copilot 和 Copilot Labs 来编写并理解二分查找算法. 先决条件: 确保您已安装 GitHub Copilot 扩展程序和 GitHub Copilot ...
- 二分查找算法的两种实现方式:非递归实现和递归实现
二分查找的条件是对一组有序数组的查找,这一点很容易忘记,在使用二分查找的时候先要对数组进行排序. 先说一下二分查找的思路:一个有序数组,想要查找一个数字key的下标,首先算出中间下标mid,利用mid ...
- 二分查找算法为什么要先排序
其实二分查找算法就和我们在一个英文字典中找一个单词一样,比如要找middle这个单词,先把字典翻到大概中间的位置,那么现在字典就被分成两个部分了,middle这个单词要么在第一个部分,要么在第二个部分 ...
- LeetCode面试刷题技巧-二分查找算法代码思路解析
二分查找的思想 提及二分查找算法,我想大部分人都不陌生,就算不是学计算机的,基本上也都使用过二分查找的思想,不信的话,且听我慢慢为你道来. 不知道你有没有玩过这样一个游戏,猜数字.就是说一个人心里想了 ...
最新文章
- 【转】Office 2003 EXCEL多窗口打开
- .net程序中资源文件的保护办法探讨
- tf报错之raise TypeError(“pred must not be a Python bool“)
- web中的cookie管理
- 前端学习(1487):axios介绍
- mysql cursor 嵌套_MYSQL 存储过程多游标嵌套遍历
- TOMCAT 连接池数据库密码加密方法
- python编程(pyautogui库)
- 数据库连接池php-cp介绍
- JQuery1.11版本对prop和attr接口的含义分离导致问题分析
- 一款,整合百度翻译api跟有道翻译api的翻译君
- 华为手机刷机后显示无服务器,华为手机刷机后,无法开机怎么办?
- Python人工智能学习路线(长篇干货)
- 【C语言】如何安装 Visual studio 2022 ?
- Make Product Equal One(思维)
- vue 组件封装——可自由拖拽移动的盒子
- KITTI数据集-百度云盘
- CAN控制器-配置过滤器
- http://blog.sina.com.cn/s/blog_ebbe6d790102vmez.html
- 酷科技 | Amabrush电动牙刷:10秒就可以完成刷牙
热门文章
- 佛系架构图秒懂OAuth2
- 数美科技推出未成年人网络环境保护方案 护航未成年人健康成长
- h5优秀控件_推荐六款炫酷的HTML5效果插件
- ORA-00918: 未明确定义列(嵌套查询容易犯的错误)
- java 两位小数_java保留两位小数及多位小数的方法 | 夕辞
- 超好看的二次元照片墙源码
- Exynos4412搭建最小文件系统
- Docker部署ES(elasticsearch)+Kibana
- git tag :gpg: skipped “xxx@xxx“: secret key not available
- 架构师如何教小学生写作文