折半查找要求顺序表中的元素必须是排好序的,即数组中的元素是由小到大排好序的 思想: 1.以数组的边界确定low和high的值,low就是最低的0,high就是最高的n-1(n是元素的个数),这里的low和high都是指向数组的下标(物理序号) 2.用low和high确定mid即所有元素的中间值,mid也是数组的下标,mid = (low+high)/2 3.如果mid下标的值等于关键字key那么就返回mid+1(逻辑序号) 4.如果关键字key大于mid下标的值,那么 low = mid+1 (要在mid的右侧找) 5.如果关键字key小于mid下标的值,那么 high = mid-1(要在mid的左侧找) 6.重新计算mid的值,进行二分查找,循环下去,如果找到放回mid+1,否则返回0
普通c语言代码:
#include
int search(int array[], int n, int key) {
int low = 0,high = n-1,mid;
while(low
关注
打赏
热门博文
- Android --- 异步任务机制之AsyncTask
- Android --- java.lang.SecurityException: Permission Denial: reading androidx.core.content.FileProvi
- Android --- AS启动报错,点什么都点不了com.intellij.ide.plugins.PluginManager(ubuntu)
- Android --- 浅谈下 ImageView 的 setImageLevel 方法走过的坑
- 【数据库系统】- 分布式数据库 - 分片透明、复制透明、位置透明、逻辑透明
- Android --- 文件的创建、写入、读取、压缩操作示例代码
- Android --- Handler 内存泄漏原因及解决方案
- Andriod --- JetPack :LiveData setValue 和 postValue 的区别
- Android --- 启动 AS 之后卡死,右下角显示applying filter 一直在加载,不断的叠加,叠加到击败甚至几万
- 【Linux】软链接与硬链接