已知一个有序表R[1..12]为{12,18,20,25,29,32,40,62,83,90,95,98}。 (1)当折半查找值为29和90的元素时,分别需要多少次比较才能查找成功(提示:画出折半查找的判定树)? (2)若采用顺序查找时,分别需要多少次比较才能查找成功?
时间: 2024-04-03 19:36:50 浏览: 245
好的,我明白了,我会根据您的问题进行回答。
首先,我们来看第一个问题,使用折半查找算法查找值为29和90的元素需要多少次比较才能查找成功。
对于折半查找算法,它的时间复杂度为 O(log n),其中 n 为有序表的元素个数。在本题中,n=12。
对于值为29的元素,折半查找的过程如下:
1. 将有序表R[1..12]的中间位置mid=6的元素32与要查找的元素29进行比较,发现32>29,因此要查找的元素在左半部分(即R[1..5]);
2. 对R[1..5]继续折半查找,得到mid=2的元素20,发现20<29,因此要查找的元素在右半部分(即R[3..5]);
3. 对R[3..5]继续折半查找,得到mid=4的元素29,查找成功。
因此,查找值为29的元素需要3次比较。
对于值为90的元素,折半查找的过程如下:
1. 将有序表R[1..12]的中间位置mid=6的元素32与要查找的元素90进行比较,发现32<90,因此要查找的元素在右半部分(即R[7..12]);
2. 对R[7..12]继续折半查找,得到mid=10的元素95,发现95>90,因此要查找的元素在左半部分(即R[7..9]);
3. 对R[7..9]继续折半查找,得到mid=8的元素83,发现83<90,因此要查找的元素在右半部分(即R[9..9]);
4. 对R[9..9]继续折半查找,得到mid=9的元素90,查找成功。
因此,查找值为90的元素需要4次比较。
接下来,我们来看第二个问题,使用顺序查找算法查找值为29和90的元素需要多少次比较才能查找成功。
对于顺序查找算法,它的时间复杂度为 O(n),其中 n 为有序表的元素个数。在本题中,n=12。
对于值为29的元素,顺序查找的过程如下:
1. 从R[1]开始,依次与要查找的元素29进行比较,直到找到为止。
因此,查找值为29的元素需要5次比较。
对于值为90的元素,顺序查找的过程如下:
1. 从R[1]开始,依次与要查找的元素90进行比较,直到找到为止。
因此,查找值为90的元素需要12次比较。
综上所述,折半查找比顺序查找更为高效,尤其是对于大规模数据的查找。
阅读全文