数据结构习题10---内部排序

一、填空题

1. 大多数排序算法都有两个基本的操作:  比较(两个关键字的大小)     移动(记录或改变指向记录的指针)   

2. 在对一组记录(543896231572604583)进行直接插入排序时,当把第7个记录60插入到有序表时,为寻找插入位置至少需比较  3   次。(可约定为,从后向前比较)

3. 在插入和选择排序中,若初始数据基本正序,则选用  插入排序(到尾部)   ;若初始数据基本反序,则选用   选择排序     

4. 在堆排序和快速排序中,若初始记录接近正序或反序,则选用  堆排序  ;若初始记录基本无序,则最好选用   快速排序     

5. 对于n个记录的集合进行冒泡排序,在最坏的情况下所需要的时间是  O(n2)   。若对其进行快速排序,在最坏的情况下所需要的时间是  O(n2)   

6. 对于n个记录的集合进行归并排序,所需要的平均时间是   O(nlog2n) ,所需要的附加空间是  O(n)   

7.【计研题2000对于n个记录的表进行2路归并排序,整个归并排序需进行  log2n  趟(遍),共计移

 n log2n  次记录。

(即移动到新表中的总次数!共log2n趟,每趟都要移动n个元素)

8.设要将序列(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     

堆排序初始建堆的结果是   Y, S, X, R, P, C, M, H, Q, D, F, A   

9. 在堆排序、快速排序和归并排序中,

若只从存储空间考虑,则应首先选取 堆排序 方法,其次选取 快速排序 方法,最后选取 归并排序 方法;

若只从排序结果的稳定性考虑,则应 选取归并排序方法;

若只从平均情况下最快考虑,则应选取快速排序方法;

若只从最坏情况下最快并且要节省内存考虑,则应选取堆排序方法。

二、选择题

(  C  )1.将5个不同的数据进行排序,至多需要比较       次。

. 8       B. 9        C. 10        D. 25

(  C  )2. 排序方法中,从未排序序列中依次取出元素与已排序序列(初始时为空)中的元素进行比较,将其放入已排序序列的正确位置上的方法,称为

. 希尔排序      B. 冒泡排序        C. 插入排序       D. 选择排序

 D  )3. 排序方法中,从未排序序列中挑选元素,并将其依次插入已排序序列(初始时为空)的一端的方法,称为

. 希尔排序      B. 归并排序        C. 插入排序       D. 选择排序

(  C  )4.对n个不同的排序码进行冒泡排序,在下列哪种情况下比较的次数最多。

. 从小到大排列好的   B. 从大到小排列好的   C. 元素无序   D. 元素基本有序

(  D )5.对n个不同的排序码进行冒泡排序,在元素无序的情况下比较的次数为

. n+1          B. n               C. n-1            D. n(n-1)/2

(前3个答案都太小了)

(  C  )6.快速排序在下列哪种情况下最易发挥其长处。

.  被排序的数据中含有多个相同排序码   B. 被排序的数据已基本有序

.  被排序的数据完全无序               . 被排序的数据中的最大值和最小值相差悬殊

(  B  )7. 对有n个记录的表作快速排序,在最坏情况下,算法的时间复杂度是

A.O(n)       B.O(n2)       C.O(nlog2n)       D.O(n3)

(  C  )8.若一组记录的排序码为(46, 79, 56, 38, 40, 84),则利用快速排序的方法,以第一个记录为基准得到的一次划分结果为

. 38, 40, 46, 56, 79, 84       B. 40,38, 46 , 79, 56, 84      

C. 40, 38,46, 56, 79, 84     D. 40, 38,46, 84, 56, 79

(  A&D )9.在最好情况下,下列排序算法中       排序算法所需比较关键字次数最少。

A.冒泡       B.归并       C.快速         D.直接插入

(n1!)

(  C  )10. 【计研题2001】置换选择排序的功能是         (置换选择排序=简单选择排序?)

A.选出最大的元素   B.产生初始归并段    C.产生有序文件   D.置换某个记录

(  A  )11.将5个不同的数据进行排序,至少需要比较       次。

. 4       B. 5        C. 6        D. 7

(  D  )12.下列关键字序列中,       是堆。

. 16,72,31,23,94,53  B. 94,23, 31, 72, 16, 53     C. 16, 53, 23,94,31, 72     D. 16, 23, 53,31, 94, 72

 B  )13.堆是一种       排序。

. 插入       B.选择        C. 交换       D. 归并

(  C  )14.堆的形状是一棵       

. 二叉排序树       B.满二叉树        C. 完全二叉树       D. 平衡二叉树

(  B  )15.若一组记录的排序码为(46, 79, 56, 38, 40, 84),则利用堆排序的方法建立的初始堆为

. 79, 46, 56, 38, 40, 84       B. 84, 79, 56, 38, 40, 46       

C. 84, 79, 56, 46, 40, 38       D. 84, 56, 79, 40, 46, 38

(  B  )16. 下述几种排序方法中,平均查找长度(ASL)最小的是

. 插入排序      B.快速排序        C. 归并排序       D. 选择排序

(  C  )17. 下述几种排序方法中,要求内存最大的是

. 插入排序      B.快速排序        C. 归并排序       D. 选择排序

(  B )18.目前以比较为基础的内部排序方法中,其比较次数与待排序的记录的初始排列状态无关的是

. 插入排序      B. 二分插入排序      C. 快速排序       D. 冒泡排序

三、简答题

1. 已知序列基本有序,问对此序列最快的排序方法是多少,此时平均复杂度是多少?

答:插入排序和冒泡应该是最快的。因为只有比较动作,无需移动元素。此时平均时间复杂度为O(n)

2. 设有1000个无序的元素,希望用最快的速度挑选出其中前10个最大的元素,最好采用哪种排序方法?

答:用堆排序或锦标赛排序最合适,因为不必等全部元素排完就能得到所需结果,时间效率为O(nlog2n)

;若用冒泡排序则需时n!/(n-10)!

四、求解题

以关键字序列(256,301,751,129,937,863,742,694,076,438)为例,分别写出执行以下算法的各趟排序结束时,关键字序列的状态,并说明这些排序方法中,哪些易于在链表(包括各种单、双、循环链表)上实现?

① 直接插入排序   ② 希尔排序   ③冒泡排序  ④快速排序

⑤直接选择排序 ⑥ 堆排序      ⑦ 归并排序   ⑧ 基数排序        (8分)

解:先回答第2问: ①  ⑤ ⑦ ⑧皆易于在链表上实现。

  • 直接插入排序的中间过程如下:                  ②  希尔排序的中间过程如下:

  • 冒泡排序的中间过程如下:                         ④快速排序的中间过程如下:

 

  • 直接选择排序的中间过程如下:                   ⑥堆排序(大根堆)的中间过程如下:

 

  • 归并排序排序的中间过程如下:          

  •   基数排序的中间过程如下:

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

用户1234567890

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值