博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
折半查找法的温习
阅读量:5895 次
发布时间:2019-06-19

本文共 904 字,大约阅读时间需要 3 分钟。

折半查找法适合于1采用顺序存储结构的2必须按照关键字大小排序的序列查找

如代码所示:

1 #include 
2 3 int BinSearch(int a[], int length, int k) 4 { 5 int low = 0, high = length - 1; 6 int mid; 7 while(low <= high) 8 { 9 mid = (low + high) / 2;10 if(a[mid] == k)11 return mid;12 else if(a[mid] > k)13 high = mid - 114 else15 low = mid + 1;16 }17 return 0;18 }19 20 int main()21 {22 int a[8] = {
2, 3, 4, 5, 6, 7, 8, 10};23 printf("元素5的位置在 :%d\n", BinSearch(a, 8, 5));24 }

折半查找法的基本思路是设置low,high, mid三个变量。如代码所示,就是通过不断的改变这3个变量来查找是否存在查找值K,如存在返回它所在的位置,如不存在,返回0

折半查找法的优点是比较次数比顺序查找少,但缺点是必须是要对已排序号的序列查找。

一般的在考试中,不要考折半查找法的代码。只会考折折半查找法的查找成功时的平均查找长度或者查找不成功时候的平均查找长度。

其中具体的做法是 画一个完全二叉排序树,数每一层有几个元素,各自乘以层数,求和。再除以元素个数。得到查找成功的平均查找长度。

查找不成功的平均查找长度就是 用虚线 把空出来的 位置补齐(最后一层的需要再一层)。然后对虚线求查找长度就行。

 

转载于:https://www.cnblogs.com/hello-lijj/p/7239005.html

你可能感兴趣的文章
angularjs-paste-upload
查看>>
hadoop学习笔记
查看>>
解除 Linux 系统的最大进程数和最大文件打开数限制
查看>>
在 Linux 中删除超大文件的技巧
查看>>
md转pdf
查看>>
php中使用file_put_contents()函数写入文本
查看>>
webpy学习笔记
查看>>
认识javascript引擎
查看>>
Solaris 安装 curl
查看>>
Python装饰器实例(1):参数合法性验证
查看>>
Sublime Text 3 自带的格式化代码功能(reindent)
查看>>
Ant是什么?
查看>>
用ASDF来组织Lisp程序编译和加载
查看>>
数据库设计原则
查看>>
程序猿学生时代的生活
查看>>
Java类的修饰符判断:java.lang.reflect.Modifier
查看>>
使用优盘或者移动硬盘安装Ubuntu
查看>>
electron-创建一个hello world应用
查看>>
RXjs相关
查看>>
ElasticSearch 安装
查看>>