折半查找的算法思想实现及其判定树的查找和构造(C语言)

Posted bfhonor

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了折半查找的算法思想实现及其判定树的查找和构造(C语言)相关的知识,希望对你有一定的参考价值。

一、折半查找

(一)算法思想

  • 折半查找,又称“二分查找”,仅适用于有序的顺序表。

1. 查找成功






2. 查找失败




(二)算法实现

(三)查找判定树

1. 查找效率分析

2. 折半查找判定树的构造

  • 如果当前low和high之间有奇数个元素,则 mid 分隔后,左右两部分元素个数相等
  • mid = ⌊(low + high)/2⌋
  • 如果当前low和high之间有偶数个元素,则 mid 分隔后,左半部分比右半部分少一个元素
  • mid = ⌊(low + high)/2⌋
  • 如果当前low和high之间有奇数个元素,则 mid 分隔后,左右两部分元素个数相等
  • 如果当前low和high之间有偶数个元素,则 mid 分隔后,左半部分比右半部分少一个元素




  • 折半查找的判定树一定是平衡二叉树
  • 折半查找的判定树中,只有最下面一层是不满的。因此,元素个数为n时树高h = ⌈log2(n + 1)⌉
  • 判定树结点关键字:左<中<右,满⾜⼆叉排序树的定义;
  • 失败结点:n+1个(等于成功结点的空链域数量)

(四)折半查找效率

(五)扩展

  • 我们通过上面的图即可看出,折半查找不一定比顺序查找更快。因为当查找的元素和顺序表中第一个元素就匹配的时候,顺序查找速度更快。
  • 如果当前low和high之间有奇数个元素,则 mid 分隔后,左右两部分元素个数相等
  • 如果当前low和high之间有偶数个元素,则 mid 分隔后,左半部分比右半部分多一个元素

以上是关于折半查找的算法思想实现及其判定树的查找和构造(C语言)的主要内容,如果未能解决你的问题,请参考以下文章

查找有序表折半查找判定树二叉排序树3阶B-树

王道数据结构7(查找)

王道数据结构7(查找)

王道数据结构7(查找)

数据结构学习笔记——查找算法

数据结构-查找树型查找