中国农业大学_821数据结构_《数据结构》习题(9)

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第9章内部排序

一、问答题

1. 什么是内部排序?什么是排序方法的稳定性?

2. 对于本章介绍的内部排序方法,哪几种是稳定的?哪几种是不稳定的?对不稳定的排序方法试举例说明。

3. 对于给定的一组记录的关键字:23,13,17,21,30,60,58,28,30,90。试分别写出用下列排序方法对其进行排序时,每一趟排序后的结果:

(1)直接插入排序;

(2)希尔排序;

(3)冒泡排序;

(4)直接选择排序;

(5)快速排序

(6)堆排序

(7)归并排序。

4. 对长度为n的记录序列进行快速排序时,所需要的比较次数依赖于这n个元素的初始序列。

(1)n = 8时,在最好的情况下需要进行多少次比较?试说明理由。

(2)给出n = 8时的一个最好情况的初始排列实例。

5 试为下列各种情况选择合适的排序方法:

(1)n = 30,要求在最坏的情况下,排序速度最快;

(2)n = 30,要求排序速度既要快,又要排序稳定。

6. 判别以下序列是否为堆(所有的非叶子结点的关键字值k i均不大于其左右两个分支结点的关键字值k2和k2i+1。),如果不是,则把它调整为堆。

(1)( 100, 86, 48, 73, 35, 39, 42, 57, 66, 21 );

(2)( 12, 70, 33, 65, 24, 56, 48, 92, 86, 33 );

(3)( 103, 97, 56, 38, 66, 23, 42, 12, 30, 52, 06, 20 );

(4) ( 05, 56, 20, 03, 23, 40, 38, 29, 61, 05, 76, 28, 100 )。

7. 一组待排序记录的关键字是:986,321,123,432,500,654,018,765,987,210。按照LSD方法写出基数排序的过程和结果。

8. 试证明:如果对于一个长度为n的任意文件进行排序,则至少需进行nlog2n次比较。

9. 试构造对5个整数元素进行排序,最多只用7次比较的算法思想。

10. 有n个不同的英文单词,它们的长度相等,均为m,如果n≥50,且m<5,试问采用什么排序方法时间复杂度最佳?为什么?

11. 如果只想得到一个序列中第k个最小元素的部分排序序列,最好采用什么排序方法?为什么?如果有这样一个序列:( 57, 40, 38, 11, 13, 34, 48, 75, 25, 6, 19, 9, 7 ),得到其第4个最小元素之前的部分序列( 6, 7, 9, 11 ),使用所选择的算法实现时,要执行多少次比较?

12. 对于快速排序的非递归算法,可以用队列(而不用栈)实现吗?如果能,试说明理由;如果不能?也要说明理由。

二、填空题

1. 在所有的排序方法中,关键字比较的次数与记录的初始排列次序无关的是。

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

3. 在待排序的元素序列基本有序的前提下,效率最高的排序方法使是。

4. 一组记录的关键字为( 46, 79, 56, 38, 40, 84 ),则利用堆排序的方法建立的初始堆为。

5. 一组记录的关键字为( 46, 79, 56, 38, 40, 84 ),则利用快速排序的方法,以第1个记录为基准得到的一次划分结果为。

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

7. 排序方法中,从未排序序列中依次取出元素,并将其依次放入已排序序列(初始为空)的一端的方法,称为。

8. 用某种排序方法对线性表( 25, 84, 21, 47, 15, 27, 68, 35, 20 ) 进行排序,元素序列变化情况如下:

(1) 25, 84, 21, 47, 15, 27, 68, 35, 20

(2) 20, 15, 21, 25, 47, 27, 68, 35, 84

(3) 15, 20, 21, 25, 35, 27, 47, 68, 84

(4) 15, 20, 21, 25, 27, 35, 47, 68, 84

则采用的排序方法是。

9. 快速排序方法在情况下最不利于发挥其长处。

10. 在插入排序、选择排序、快速排序及归并排序中,方法要求内存量最大。

11. 在插入排序、选择排序、快速排序及归并排序中,平均查找长度最小的是。

12. 在一组记录( 54, 38, 96, 23, 15, 72, 60, 45, 83 ) 进行直接插入排序中,当把第7个记录60插入到有序表时,为寻找插入位置需要比较次。

13. 在利用快速排序方法对一组记录( 54, 38, 96, 23, 15, 72, 60, 45, 83 ) 进行快速排序排序时,递归调用而使用的栈所能够达到的最大深度为,总共需要递归调用的次数为,其中第二次递归调用是对一组记录进行快速排序。

14. 在堆排序、快速排序和归并排序中,如果只从存储空间考虑,则应选取方法,其次选取方法,最后选取方法;如果只从排序结果稳定性考虑,则应选取方法;如果只从平均情况下排序最快考虑,则应选取;如果只从最坏情况下排序最快并且要节省内存考虑,则应选取方法。

15. 在堆排序和快速来序中,如果原始记录接近正序或反序,则选用;如果原始记录无序,则最好选用。

16. 在插入排序和选择来序中,如果初始数据基本正序,则选用。

三、算法题

1. 设计一个算法,一个线性表中的元素为正整数或负整数:

(1)将正整数和负整数分开,使线性表的前一半为负整数,后一半为正整数;

(2)不要求对这些元素排序,但是要求尽量减少交换的次数。

2. 设计一个双向冒泡排序算法,即在排序过程中交替改变扫描方向。

3. 设计一个直接选择排序的改进算法,将数组中的元素按照降序排列。

4. 设计一个算法,在含有n个元素的堆中增加一个元素,且调整为堆。

5. 设计一个算法,指出一个无序数序中的任意一个元素是第几大元素(从小到大数),要求比较的次数最小。

6. 设计一个插入排序的改进算法,通过折半查找法实现在插入排序中寻找插入位置的操作。

7. 设计一个算法,将给定的两个有序表A和B(均从小到大)归并成一个有序表C。

8. 设计一个算法,设有整数0 ~ n-1存放在整型数组A[0..n-1]中,对A排序,要求时

相关文档
最新文档