1.先画出满足有序表长度的最大满二叉树,然后将剩下的结点个数一个个插入该树;2.从上往下看,比较每个结点的左右子树结点个数,如果左右子树结点个数相同优先放右边,左边比右边少就放左边,直到往下塞到二叉树底部成为叶子结点。对于步骤1和2的具体做法,见下列实例分析:长度为12的有序表画出折...
⑵ 考虑判定树的左子树,即将查找区间调整到左半区,此时的查找区间是[1,4],也就是说,左分支上为根结点的值减1,代表查找区间的高端high,此时,根结点的左孩子是(1+4)/2=2,如图(b)所示;⑶ 考虑判定树的右子树,即将查找区间调整到右半区,此时的查找区间是[6,10],也就是说,右分支...
折半查找画ASL判定树 例子:给定11个数据元素的有序表{2,3,10,15,20,25,28,29,30,35,40}; 所有的题目都可以按照0~N的方式来处理,如下,如果不考话题直接这样做即可,如果需要画图,把下面的值当作数组的序号就好。用数组的值替换数组的序号 第一层:0~11。11/2 = 5; 第二层:0~4。4/2 = 2; 6~10...
将要找的数3与a[5]比较,a[5]的值是9,发现a[5]>3,显然3应当在a[1]到a[5]之间 这样可以缩小查找范围;再找a[1]到a[5]范围内的居中的数,即a[3] 将要找的数3与a[3]比较,a[3]的值为5,发现a[3]>3,显然3应当在a[1]到a[3]范围内 再将查找范围缩小一半,与a[1]到a[3]范围内的居中的数...
mid的位置就是(起点下标+ 终点下标)/2下取整 比如low = 1, high = 10, 因此mid = (1+10)/2 = 5 按照比较的次数生成判定树,比较1次的是根结点,比较2次的在第二层,比较3次的在第三层,...一次类推,也可以说是每次的mid即形成判定树的结点,左子树上的结点是有序表前半部分的所有结...
折半查找算法又叫二分查找算法,当你想在一组有序数组中想要查询一个数字,一般的方法,数组中有多少个数字,系统就要找多少次,很不快捷,而用二分法查找的话,2^n个数字只需要查找最多n次就可以了,具体操作如下: #include<stdio.h> int main() { int arr[] = {1,2,3,4,5,6,7,8,9,10}; ...