1.设有5000个无序的元素,希望用最快的速度挑选出其中前50个最大的元素,最好选用( )法。
解释:堆排序使用50个元素的最小堆
2.下面的排序算法中,初始数据集的排列顺序对算法的性能无影响的是(B)
A、插入排序 B、堆排序 C、冒泡排序 D、快速排序
解释:若序列事先已经基本有序,则插入法和冒泡法会明显减少比较次数,快速排序法与主元的选择有关,若一般选子序列左侧第一个元素比较,则第一个元素最好是大小居中的,以使得分成的两个子数组长度大致相等,性能才能最佳,所以快速排序也与初始输入集有关的。堆排序受数据集输入顺序影响最小。
3. 在堆排序、快速排序和归并排序中,
若只从存储空间考虑,则应首先选取堆 方法,其次选取快速排序方法,最后选取归并排序方法;
若只从排序结果的稳定性考虑,则应 选取 归并排序 方法;
若只从平均情况下最快考虑,则应选取 快速排序方法;
若只从最坏情况下最快并且要节省内存考虑,则应选取 堆排序 方法。
3. 对于n个记录的表进行2路归并排序,整个归并排序需进行┌log2n┐ 趟(遍)。
4. 设要将序列(Q, H,C, Y, P, A, M, S, R, D, F, X)中的关键码按字母序的升序重新排列,则:
冒泡排序一趟扫描的结果是 H C Q P A M S R D F X Y ;
初始步长为4的希尔(shell)排序一趟的结果是P A C S Q D F X R H M Y ;
二路归并排序一趟扫描的结果是 H Q C Y A P M S D R F X;
快速排序一趟扫描的结果是 F H C D P A M Q R S Y X ;( 以Q为基准,从后边的指针开始向前扫描)
堆排序初始建堆的结果是 A D C R F Q M S Y P H X 。(小根堆)
5.对于n个记录的集合进行归并排序,所需要的平均时间是 O(nlog2n),所需要的附加空间是 O(n)
6.对于n个记录的集合进行冒泡排序,在最坏的情况下所需要的时间是 O(n2) 。若对其进行快速排序,在最坏的情况下所需要的时间是 O(n2) 。
7. 在插入和选择排序中,若初始数据基本正序,则选用插入 ;若初始数据基本反序,则选用 选择 。
8.在对一组记录(54,38,96,23,15,72,60,45,83)进行直接插入排序时,当把第7个记录60插入到有序表时,为寻找插入位置至少需比较 6 次。
9.大多数排序算法都有两个基本的操作: 比较 和 移动 。
10.有一个表长为m的散列表,初始状态为空,现将n(n
11.散列法存储的基本思想是由 关键字的值 决定数据的存储地址。
12.在各种查找方法中,平均查找长度与结点个数n无关的查找方法是 散列查找 。
13.折半查找有序表(4,6,12,20,28,38,50,70,88,100),若查找表中元素20,它将依次与表中元素 28,6,12,20 比较大小。
14. 在数据的存放无规律而言的线性表中进行检索的最佳方法是 顺序查找(线性查找) 。
15. 线性有序表(a1,a2,a3,…,a256)是从小到大排列的,对一个给定的值k,用二分法检索表中与k相等的元素,在查找不成功的情况下,最多需要检索 8 次。设有100个结点,用二分法查找时,最大比较次数是 7 。
16. 假设在有序线性表a[20]上进行折半查找,则比较一次查找成功的结点数为1;比较两次查找成功的结点数为 2 ;比较四次查找成功的结点数为 8 ;平均查找长度为 3.7 。
17.链表适用于 A 查找
A.顺序 B.二分法 C.顺序,也能二分法 D.随机
18.在表长为n的链表中进行线性查找,它的平均查找长度为( B )
A. ASL=n; B. ASL=(n+1)/2;
C. ASL= +1; D. ASL≈log2(n+1)-1
19. 折半搜索与二叉搜索树的时间性能(C )
A. 相同 B. 完全不同 C. 有时不相同 D. 数量级都是O(log2n)