折半查找的基本思想是:首先以整个查找表作为 查找范围,用查找条件中给定值k与中间位置结点的关 键字比较,若相等,则査找成功,否则,根据比较结 果缩小査找范围,如果k的值小于关键字的值,根据查 找表的有序性可知查找的数据元素只有可能在表的前 半部分,即在左半部分子表中,所以继续对左子表进 行折半査找;若k的值大于中间结点的关键字值,则可 以判定查找的数据元素只有可能在表的后半部分,即 在右半部分子表中,所以应该继续对右子表进行折半 查找。每进行一次折半查找,要么查找成功,结束查 找,要么将査找范围缩小一半,如此重复,直到查找 成功或查找范围缩小为空即查找失败为止。 请单市鼠标左键换页
折半查找的基本思想是:首先以整个查找表作为 查找范围,用查找条件中给定值k与中间位置结点的关 键字比较,若相等,则查找成功,否则,根据比较结 果缩小查找范围,如果k的值小于关键字的值,根据查 找表的有序性可知查找的数据元素只有可能在表的前 半部分,即在左半部分子表中,所以继续对左子表进 行折半查找;若k的值大于中间结点的关键字值,则可 以判定查找的数据元素只有可能在表的后半部分,即 在右半部分子表中,所以应该继续对右子表进行折半 查找。每进行一次折半查找,要么查找成功,结束查 找,要么将查找范围缩小一半,如此重复,直到查找 成功或查找范围缩小为空即查找失败为止
2.折半查找过程示例 假设待查有序(升序)顺序表中数据元素的关键 字序列为(8,18,27,42,47,50,56,68,95,120),用折半查 找方法查找关键字值为27和59的数据元素 a[1]a[2]a[3]a[4]a[S]al6]a7]al8]a[9]a[l 8 1827424750566895120 ksa(mid].key,更新 hig ow↑ high k>a[mid]key,更新 lowlow↑mid↑ 1g al mi 查找成 功 low↑hig↑ 请单市鼠标左键换页
2. 折半查找过程示例 假设待查有序(升序)顺序表中数据元素的关键 字序列为(8,18,27,42,47,50,56, 68,95,120),用折半查 找方法查找关键字值为27和59的数据元素。 a[1] a[2] a[3] a[4] a[5] a[6] a[7] a[8] a[9] a[10] 8 18 27 42 47 50 56 68 95 120 k<a[mid].key,更新 high low↑ mid↑ high ↑ k>a[mid].key,更新 low low↑ mid↑ hig↑ k=a[mid].key ,查找成 功 low↑ hig↑ mid↑