折半查找要求顺序表中的元素必须是排好序的,即数组中的元素是由小到大排好序的 思想: 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 方法走过的坑
- 【数据库系统】- 分布式数据库 - 分片透明、复制透明、位置透明、逻辑透明
- 【数据库原理】闭包与候选码的求法,你掌握技巧了吗?
- UML类图与类的关系详解
- Android --- 文件的创建、写入、读取、压缩操作示例代码
- Android --- 强引用、软引用、弱引用和虚引用
- Android --- Handler 内存泄漏原因及解决方案