#C语言大佬之路
折半查找法又称为二分查找法
优点是比较次数少,查找速度快,平均性能好
缺点是要求待查表为有序表,若无序得先排序
折半查找方法适用于不经常变动而查找频繁的有序列表
一、基本思想
折半查找的的前提是表中元素是有序排列,将表中间位置记录的关键字与查找关键字比较,如果两者相等,则查找成功;否则利用中间位置记录将表分成前、后两个子表,如果中间位置记录的关键字大于查找关键字,则进一步查找前一子表,否则进一步查找后一子表。
重复以上过程,直到找到满足条件的记录,此时查找成功;或直到子表不存在为止,此时查找不成功。
第一次折半后,关键字是 (0+7)/2,a[3]=4,4不等于7,且4小于7所以,继续查询的目标为右边的字表,调整起点,起点设置为 a[3+1],终点不变,仍然是7
第二次折半,(4+7)/2=5 a[5]=6还是不等于7,且6<7,调整起点为a[6]
第三次折半,(6+7)/2=6 a[6]=7,查找的关键字等于折半的关键字,返回数组下标6
目标值设为x,数组a中存储一组有序数列,数列的长度为n,数组元素是从a[0]至a[n-1],注意实际代码中的数组下标的设置,下列算法仅做描述
(1) 将n个元素分成大致相等的两部分,取a[n/2]与x做比较,如果x=a[n/2],即x为中间值,则找到x,返回数组下标,算法中止;
(2) 如果x<a[n/2],基则只要在数组a的左半部分继续搜索x
(3) 如果x>a[n/2],则只要在数组a的右半部搜索x
假设总共有n个元素,每次查找的区间大小就是n,n/2,n/4,…,n/2^k,其中k就是循环的次数。
折半查找(二分法排序)的对转本考生的意义
1.函数调用的框架
2.数组作为实参和形参的方法
3.数组的定义、初始化,数组元素的使用
4.折半查找作为经典查找方法,是考试大概率考察题型之一
白羊叔 2023战斗群
超前备考 已经开设
为学长学姐加油
快人一步