排序练习题

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 n(n-1)/2

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≈log(n+1)-1

19.  折半搜索与二叉搜索树的时间性能(C   )

 A. 相同       B.  完全不同        C. 有时不相同       D. 数量级都是O(log2n)







你可能感兴趣的:(数据结构)