文档库 最新最全的文档下载
当前位置:文档库 › 《数据结构 》第10章 排序

《数据结构 》第10章 排序

第10章排序自测题答案

第9章排序自测卷姓名班级 一、填空题(每空1分,共24分) 1. 大多数排序算法都有两个基本的操作:比较和移动。 2. 在对一组记录(54,38,96,23,15,72,60,45,83)进行直接插入排序时,当把第7个记录60插 入到有序表时,为寻找插入位置至少需比较6 次。 3. 在插入和选择排序中,若初始数据基本正序,则选用插入;若初始数据基本反序,则选用 选择。 4. 在堆排序和快速排序中,若初始记录接近正序或反序,则选用堆排序;若初始记录基本 无序,则最好选用快速排序。 5. 对于n个记录的集合进行冒泡排序,在最坏的情况下所需要的时间是O(n2) 。若对其进行快速 排序,在最坏的情况下所需要的时间是O(n2)。 6. 对于n个记录的集合进行归并排序,所需要的平均时间是O(nlog2n),所需要的附加空间 是O(n) 。 7.对于n个记录的表进行2路归并排序,整个归并排序需进行┌log2n┐趟(遍)。 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 H F X R D 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; 堆排序初始建堆的结果是A D C R F Q M S Y P H X。 9. 在堆排序、快速排序和归并排序中, 若只从存储空间考虑,则应首先选取方法,其次选取快速排序方法,最后选取归并排序方法; 若只从排序结果的稳定性考虑,则应选取归并排序方法; 若只从平均情况下最快考虑,则应选取堆排序、快速排序和归并排序方法; 若只从最坏情况下最快并且要节省内存考虑,则应选取堆排序方法。 二、单项选择题(每小题1分,共18分) ( C )1.将5个不同的数据进行排序,至多需要比较次。 A. 8 B. 9 C. 10 D. 25 (C)2.排序方法中,从未排序序列中依次取出元素与已排序序列(初始时为空)中的元素进行比较,将其放入已排序序列的正确位置上的方法,称为 A. 希尔排序B. 冒泡排序C. 插入排序D. 选择排序(D)3.从未排序序列中挑选元素,并将其依次插入已排序序列(初始时为空)的一端的方法,称为

第十章:内部排序练习题

第十章:内部排序练习题 一、选择题 1、下述几种排序方法中,平均查找长度最小的是()。 A、插入排序 B、选择排序 C、快速排序 D、归并排序 2、设关键字序列为(3,7,6,9,7,1,4,5,20),对其进行排序的最小交换次数为()。 A、6 B、7 C、8 D、20 3、下列排序算法中不稳定的有()。 A、直接选择排序 B、直接插入排序 C、冒泡排序 D、二叉排序 E、Shell排序 F、快速排序 G、归并排序 H、堆排序 I、基数排序 4、内部排序多个关键字的文件,最坏情况下最快的排序方法是(),相应的时间复杂度为(),该算法是()排序方法。 A、快速排序 B、插入排序 C、归并排序 D、简单选择排序 E、O(nlog2n) F、O(n2) G、O(n2log2n) H、O(n) I、稳定J、不稳定 5、对初始状态为递增的表按递增顺序排序,最省时间的是()算法,最费时间的算法是()。 A、堆排序 B、快速排序 C、插入排序 D、归并排序 6、下述几种排序方法中,要求内存量最大的是()。 A、插入排序 B、选择排序 C、快速排序 D、归并排序 7、在下面的排序方法中,关键字比较的次数与记录的初始排列次序无关的是()。 A、希尔排序 B、冒泡排序 C、插入排序 D、选择排序 8、下列排序中,排序速度与数据的初始排列状态没有关系的是()。 A、直接选择排序 B、基数排序 C、堆排序 D、直接插入排序 9、若需在O(nlog2n)的时间内完成对数组的排序,且要求排序是稳定的,则可选择的排序方法为()。 A、快速排序 B、堆排序 C、归并排序 D、直接插入排序 10、排序方法中,从未排序序列中依次取出元素与已排序序列(初始时为空)中的元素进行比较,将其放入已排序序列正确位置上的方法,称为()。 A、希尔排序 B、冒泡排序 C、插入排序 D、选择排序 11、每次把待排序的元素划分为左右两个子区间,其中左区间中元素的关键字均小于等于基准元素的关键字,右区间中元素的关键字均大于基准元素的关键字,则此排序方法为()。 A、堆排序 B、快速排序 C、冒泡排序 D、Shell排序 12、排序方法中,从未排序序列中挑选元素,并将其依次放入已排序序列(初始时为空)的一端的方法,称为()。 A、希尔排序 B、归并排序 C、插入排序 D、选择排序 13、n个记录的直接插入排序所需记录关键码的最大比较次数为()。 A、nlog2n B、n2/2 C、(n+2)(n-1)/2 D、n-1 14、n个记录的直接插入排序所需的记录最小移动次数为()。 A、2(n-1) B、n2/2 C、(n+3)(n-2)/2 D、2n 15、快速排序在()情况下最不利于发挥其长处,在()情况下最易发挥其长处。 A、被排序的数据量很大 B、被排序的数据已基本有序 C、被排序的数据完全有序 D、被排序的数据中最大与最小值相差不大 E、要排序的数据中含有多个相同值。

数据结构第十章习题课

1.下列排序算法中,其中()是稳定的。 A. 堆排序,冒泡排序 B. 快速排序,堆排序 C. 直接选择排序,归并排序 D. 归并排序,冒泡排序 2.若需在O(nlog2n)的时间内完成对数组的排序,且要求排序是稳定的,则可选择的排序方法是()。 A. 快速排序 B. 堆排序 C. 归并排序 D. 直接插入排序3.排序趟数与序列的原始状态有关的排序方法是( )排序法。 A.插入 B. 选择 C. 冒泡 D. 快速4.对一组数据(84,47,25,15,21)排序,数据的排列次序在排序的过程中 的变化为(1)84 47 25 15 21 (2)15 47 25 84 21 (3)15 21 25 84 47 (4) 15 21 25 47 84 则采用的排序是( )。 A. 选择 B. 冒泡 C. 快速 D. 插入5.对序列{15,9,7,8,20,-1,4}进行排序,进行一趟后数据的排列变为{4,9,-1,8,20,7,15};则采用的是()排序。 A. 选择 B. 快速 C. 希尔 D. 冒泡6.若上题的数据经一趟排序后的排列为{9,15,7,8,20,-1,4},则采用的 是()排序。 A.选择 B. 堆 C. 直接插入 D. 冒泡 7.在文件“局部有序”或文件长度较小的情况下,最佳内部排序的方法是()A.直接插入排序B.冒泡排序C.简单选择排序 8.下列排序算法中,()算法可能会出现下面情况:在最后一趟开始之前,所有元素都不在其最终的位置上。 A. 堆排序 B. 冒泡排序 C. 快速排序 D. 插入排序 9. 下列排序算法中,占用辅助空间最多的是:( ) A. 归并排序 B. 快速排序 C. 希尔排序 D. 堆排序10.用直接插入排序方法对下面四个序列进行排序(由小到大),元素比较次数 最少的是()。 A.94,32,40,90,80,46,21,69 B.32,40,21,46,69,94,90,80 C.21,32,46,40,80,69,90,94 D.90,69,80,46,21,32,94,40 11. 若用冒泡排序方法对序列{10,14,26,29,41,52}从大到小排序,需进行()次比较。 A. 3 B. 10 C. 15 D. 25 12.对n个记录的线性表进行快速排序为减少算法的递归深度,以下叙述正确

中南大学数据结构与算法第10章内部排序课后作业答案

第10章内部排序习题练习答案 1.以关键字序列(265,301,751,129,937,863,742,694,076,438)为例,分别写出执行以下排序算法的各趟排序结束时,关键字序列的状态。 (1) 直接插入排序(2)希尔排序(3)冒泡排序(4)快速排序 (5) 直接选择排序(6) 堆排序(7) 归并排序(8)基数排序 上述方法中,哪些是稳定的排序?哪些是非稳定的排序?对不稳定的排序试举出一个不稳定的实例。 答: (1)直接插入排序:(方括号表示无序区) 初始态: 265[301 751 129 937 863 742 694 076 438] 第一趟:265 301[751 129 937 863 742 694 076 438] 第二趟:265 301 751[129 937 863 742 694 076 438] 第三趟:129 265 301 751[937 863 742 694 076 438] 第四趟:129 265 301 751 937[863 742 694 076 438] 第五趟:129 265 301 751 863 937[742 694 076 438] 第六趟:129 265 301 742 751 863 937[694 076 438] 第七趟:129 265 301 694 742 751 863 937[076 438] 第八趟:076 129 265 301 694 742 751 863 937[438] 第九趟:076 129 265 301 438 694 742 751 863 937

(2)希尔排序(增量为5,3,1) 初始态: 265 301 751 129 937 863 742 694 076 438 第一趟:265 301 694 076 438 863 742 751 129 937 第二趟:076 301 129 265 438 694 742 751 863 937 第三趟:076 129 265 301 438 694 742 751 863 937 (3)冒泡排序(方括号为无序区) 初始态[265 301 751 129 937 863 742 694 076 438] 第一趟:076 [265 301 751 129 937 863 742 694 438] 第二趟:076 129 [265 301 751 438 937 863 742 694] 第三趟:076 129 265 [301 438 694 751 937 863 742] 第四趟:076 129 265 301 [438 694 742 751 937 863] 第五趟:076 129 265 301 438 [694 742 751 863 937] 第六趟:076 129 265 301 438 694 742 751 863 937 (4)快速排序:(方括号表示无序区,层表示对应的递归树的层数)

第10章 排序 作业

第10章排序 一、填空题 1. 大多数排序算法都有两个基本的操作:和。 2. 在对一组记录(54,38,96,23,15,72,60,45,83)进行直接插入排序时,当把第7 个记录60插入到有序表时,为寻找插入位置至少需比较次。 3. 在插入和选择排序中,若初始数据基本正序,则应选用排序算法;若初始数据基 本反序,则应选用排序算法。 4. 在堆排序和快速排序中,若初始记录接近正序或反序,则选用;若初始记录基本 无序,则最好选用。 5. 对于n个记录的集合进行冒泡排序,在最坏的情况下所需要的时间是。若对其进 行快速排序,在最坏的情况下所需要的时间是。 6. 对于n个记录的集合进行归并排序,所需要的平均时间是,所需要的附加空间 是。 7.对于n个记录的表进行2路归并排序,整个归并排序需进行趟(遍)。 8. 设要将序列(Q, H, C, Y, P, A, M, S, R, D, F, X)中的关键码按字母序的升序重新排 列,则:冒泡排序一趟扫描的结果是;初始步长为4的希尔(shell)排序一趟的结果是;归并排序一趟扫描的结果是;快速排序一趟扫描的结果是;堆排序初始建堆的结果是。 9. 分别采用堆排序,快速排序,冒泡排序和归并排序,对初态为有序的表进行排序,则最省 时间的是算法,最费时间的是算法。 10、对n个记录的表r[1..n]进行简单选择排序,所需进行的关键字间的比较次数为。 二、单项选择题 1、下列四个序列中,()是堆。 A. 75,65,30,15,25,45,20,10 B. 75,65,45,10,30,25,20,15 C. 75,45,65,30,15,25,20,10 D. 75,45,65,10,25,30,20,15 2.排序方法中,从未排序序列中依次取出元素与已排序序列(初始时为空)中的元素进行比较,将其放入已排序序列的正确位置上的方法,称为() A. 希尔排序B. 冒泡排序C. 插入排序D. 选择排序 3.从未排序序列中挑选元素,并将其依次插入已排序序列(初始时为空)的一端的方法,称为() A. 希尔排序B. 归并排序C. 插入排序D. 选择排序 4.对n个不同的排序码进行冒泡排序,在下列()情况下比较的次数最多。

第十章 排序

第十章排序 一、名词解释 1.排序 2.内部排序 3.外部排序 4.堆 5.堆排序 二、填空 1.若待排序的序列中存在多个记录具有相同的键值,经过排序,这些记录的相对次序仍然保持不变,则称这种排序方法是________的,否则称为 ________的。 2.按照排序过程涉及的存储设备的不同,排序可分为________排序和 ________排序。 3.按排序过程中依据的不同原则对内部排序方法进行分类,主要有: ________、________、________、 ________等四类。 4.在排序算法中,分析算法的时间复杂性时,通常以________和________为标准操作。评价排序的另一个主要标准是执行算法所需要的________。 5.常用的插入排序方法有________插入排序、________插入排序、________插入排序和________插入排序。 6.以下为直接插入排序的算法。请分析算法,并在________上填充适当的语句。 void straightsort(list r); {for(i=___________;i<=n;i++) {r[0]=r[i];j=i-1; while(r[0].key

数据结构第九、十章 作业答案

第九章 查找 一、填空题 1. 在数据的存放无规律而言的线性表中进行检索的最佳方法是 顺序查找(线性查找) 。 2. 线性有序表(a 1,a 2,a 3,…,a 256)是从小到大排列的,对一个给定的值k ,用二分法检索 表中与k 相等的元素,在查找不成功的情况下,最多需要检索 8 次。设有100个结点,用二分法查找时,最大比较次数是 7 。 3. 假设在有序线性表a[1..20]上进行折半查找,则比较一次查找成功的结点数为1;比较两次查找成功的结点数为 2 ;比较四次查找成功的结点数为 8 ,其下标从小到大依次是1,3,6,8,11,13,16,19______,平均查找长度为 3.7 。 解:显然,平均查找长度=O (log 2n )<5次(25)。但具体是多少次,则不应当按照公式 )1(log 12++=n n n ASL 来计算(即(21×log 221)/20=4.6次并不正确!)。因为这是在假设n =2m -1 的情况下推导出来的公式。应当用穷举法罗列: 全部元素的查找次数为=(1+2×2+4×3+8×4+5×5)=74; ASL =74/20=3.7 !!! 4.折半查找有序表(4,6,12,20,28,38,50,70,88,100),若查找表中元素20,它 将依次与表中元素 28,6,12,20 比较大小。 5. 在各种查找方法中,平均查找长度与结点个数n 无关的查找方法是 散列查找 。 6. 散列法存储的基本思想是由 关键字的值 决定数据的存储地址。 7. 有一个表长为m 的散列表,初始状态为空,现将n (n

第10章 排序答案

第10章排序(参考答案) 18. 对于后三种排序方法两趟排序后,序列的首部或尾部的两个元素应是有序的两个极值,而给定的序列并不满足。 20. 本题为步长为3的一趟希尔排序。 24.枢轴是73。 49. 小根堆中,关键字最大的记录只能在叶结点上,故不可能在小于等于n/2的结点上。 64. 因组与组之间已有序,故将n/k个组分别排序即可,基于比较的排序方法每组的时间下界为O(klog2k),全部时间下界为O(nlog2k)。 部分答案解释如下: 5. 错误。例如冒泡排序是稳定排序,将4,3,2,1按冒泡排序排成升序序列,第一趟变成3,2,1,4,此时3就朝向最终位置的相反方向移动。 12. 错误。堆是n个元素的序列,可以看作是完全二叉树,但相对于根并无左小右大的要求,故其既不是二叉排序树,更不会是平衡二叉树。 22. 错误。待排序序列为正序时,简单插入排序比归并排序快。 三、填空题 1. 比较,移动 2.生成有序归并段(顺串),归并 3.希尔排序、简单选择排序、快速排序、堆排序等 4. 冒泡,快速 5. (1)简单选择排序 (2)直接插入排序(最小的元素在最后时) 6. 免去查找过程中每一步都要检测整个表是否查找完毕,提高了查找效率。 7. n(n-1)/2 8.题中p指向无序区第一个记录,q指向最小值结点,一趟排序结束,p和q所指结点值交换,同时向后移p指针。(1)!=null (2)p->next (3)r!=null (4)r->datadata (5)r->next (6)p->next 9. 题中为操作方便,先增加头结点(最后删除),p指向无序区的前一记录,r指向最小值结点的前驱,一趟排序结束,无序区第一个记录与r所指结点的后继交换指针。 (1)q->link!=NULL (2)r!=p (3)p->link (4)p->link=s (5)p=p->link 10.(1)i

第十章排序答案

第10章排序 一、选择题 1.某内排序方法的稳定性是指( D )。【南京理工大学 1997 一、10(2分)】 A.该排序算法不允许有相同的关键字记录 B.该排序算法允许有相同的关键字记录 C.平均时间为0(n log n)的排序方法 D.以上都不对 2.下面给出的四种排序法中( D )排序法是不稳定性排序法。【北京航空航天大学 1999 一、10 (2分)】 A. 插入 B. 冒泡 C. 二路归并 D. 堆积 3.下列排序算法中,其中(D )是稳定的。【福州大学 1998 一、3 (2分)】 A. 堆排序,冒泡排序 B. 快速排序,堆排序 C. 直接选择排序,归并排序 D. 归并排序,冒泡排序 4.稳定的排序方法是( B )【北方交通大学 2000 二、3(2分)】 A.直接插入排序和快速排序 B.折半插入排序和起泡排序 C.简单选择排序和四路归并排序 D.树形选择排序和shell排序 5.下列排序方法中,哪一个是稳定的排序方法?( B )【北方交通大学 2001 一、8(2分)】A.直接选择排序 B.二分法插入排序 C.希尔排序 D.快速排序 6. 快速排序方法在( D )情况下最不利于发挥其长处。【燕山大学 2001 一、3 (2分)】 A. 要排序的数据量太大 B. 要排序的数据中含有多个相同值 C. 要排序的数据个数为奇数 D. 要排序的数据已基本有序 7. 以下序列不是堆的是( D )。【西安电子科技大学 2001应用一、5 (2分)】 A. (100,85,98,77,80,60,82,40,20,10,66) B. (100,98,85,82,80,77,66,60,40,20,10) C. (10,20,40,60,66,77,80,82,85,98,100) D. (100,85,40,77,80,60,66,98,82,10,20) 8.下列四个序列中,哪一个是堆( C )。【北京工商大学 2001 一、8 (3分)】 A. 75,65,30,15,25,45,20,10 B. 75,65,45,10,30,25,20,15 C. 75,45,65,30,15,25,20,10 D. 75,45,65,10,25,30,20,15 9.从未排序序列中依次取出一个元素与已排序序列中的元素依次进行比较,然后将其放在已排序序列的合适位置,该排序方法称为( A )排序法。【北京航空航天大学 1999 一、8(2分)】 A. 插入 B. 选择 C. 希尔 D. 二路归并 10.比较次数与排序的初始状态无关的排序方法是( D )。【北方交通大学 2000 二、2(2分)】A.直接插入排序 B.起泡排序 C.快速排序 D.简单选择排序 11.对关键码序列28,16,32,12,60,2,5,72快速排序,从小到大一次划分结果为( B )。 A. (2,5,12,16)26(60,32,72) B. (5,16,2,12)28(60,32,72) C. (2,16,12,5)28(60,32,72) D. (5,16,2,12)28(32,60,72) 【青岛大学 2000 三、4 (2分)】12.下列排序算法中( B )不能保证每趟排序至少能将一个元素放到其最终的位置上。 A.快速排序 B. shell排序 C. 堆排序 D.冒泡排序【合肥工业大学 2001 一、3(2分)】13.有一组数据(15,9,7,8,20,-1,7,4)用快速排序的划分方法进行一趟划分后数据的排序为 ( A )(按递增序)。【南京理工大学 1996 一、4 (2分)】 A.下面的B,C,D都不对。 B.9,7,8,4,-1,7,15,20 C.20,15,8,9,7,-1,4,7 D. 9,4,7,8,7,-1,15,20 14.一组记录的关键码为(46,79,56,38,40,84),则利用快速排序的方法,以第一个记录为基准得到的一次划分结果为( C )。【燕山大学 2001 一、4(2分)】 A.(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) 15.下列排序算法中,在待排序数据已有序时,花费时间反而最多的是( C )排序。 A.冒泡 B. 希尔 C. 快速 D. 堆【南京理工大学 2001 一、12 (1.5分)】 16. 对初始状态为递增序列的表按递增顺序排序,最省时间的是( C )算法,最费时间的是( B )算 法。 A. 堆排序 B. 快速排序 C. 插入排序 D. 归并排序【南开大学 2000 一、5】 17. 就平均性能而言,目前最好的内排序方法是( D )排序法。【西安电子科技大学 1998 一、9 (2分)】 A. 冒泡 B. 希尔插入 C. 交换 D. 快速 18.如果只想得到1000个元素组成的序列中第5个最小元素之前的部分排序的序列,用( D )方法最快。

第10章 排序

第10章排序 一、基础知识题 10.1 基本概念:内排序,外排序,稳定排序,不稳定排序,顺串,败者树,最 佳归并树。 【解答】⑴内排序和外排序若整个排序过程不需要访问外存便能完成,则称此类排序问题为内部排序;反之,若参加排序的记录数量很大,整个序列的排序过程不可能在内存中完成,则称此类排序问题为外部排序。内部排序适用于记录个数不多的文件,不需要访问外存,而外部排序适用于记录很多的大文件,整个排序过程需要在内外存之间多次交换数据才能得到排序的结果。 ⑵稳定排序和不稳定排序假设待排序记录中有关键字K i=K j(i≠j),且在排序前的序列中R i领先于R j。经过排序后,R i与R j的相对次序保持不变(即R i仍领先于R j),则称这种排序方法是稳定的,否则称之为不稳定的。 ⑶顺串外部排序通常经过两个独立的阶段完成。第一阶段,根据内存大小,每次把文件中一部分记录读入内存,用有效的内部排序方法(如快速排序、堆排序等)将其排成有序段,这有序段又称顺串或归并段。 ⑷败者树败者树为提高外部排序的效率而采用的,是由参加比赛的n个元素作叶子结点而得到的完全二叉树。每个非叶(双亲)结点中存放的是两个子结点中的败者数据,而让胜者去参加更高一级的比赛。另外,还需增加一个结点,即结点0,存放比赛的全局获胜者。 ⑸最佳归并树在外部排序的多路平衡归并的k叉树中,为了提高效率减少对外存的读写次数,按哈夫曼树构造的k叉树称最佳归并树。这棵树中只有度为0和度为k的结点。若用m表示归并段个数,用n k表示度为k的个数,若 (m-1)%(k-1)=0,则不需增加虚段,否则应附加k-(m-1)%(k-1)-1个虚段(即第一个k路归并使用(m-1)%(k-1)+1个归并段)。 10.2设待排序的关键字序列为(15, 21, 6, 30, 23, 6′, 20, 17),试 分别写出使用以下排序方法每趟排序后的结果。并说明做了多少次比较。 (1) 直接插入排序(2) 希尔排序(增量为5,2,1) (3) 起泡排序 (4) 快速排序(5) 直接选择排序 (6) 锦标赛排序 (7) 堆排序(8) 二路归并排序 (9) 基数排序 【解答】 (1) 直接插入排序 初始关键字序列: 15,21,6,30,23,6′,20,17 第一趟直接插入排序:【15,21】 第二趟直接插入排序:【6,15,21】 第三趟直接插入排序:【6,15,21,30】 第四趟直接插入排序:【6,15,21,23,30】 第五趟直接插入排序:【6,6′,15,21,23,30】 第六趟直接插入排序:【6,6′,15,20,21,23,30】

数据结构第10章 内部排序习题

第10章内部排序 一、单项选择题 1.若要尽可能地完成对实数数组得排序,且要求排序是稳定的,则应选______。 A.快速排序 B.堆排序 C.归并排序 D.基数排序 2.如果只想得到1000个元素组成的序列中第5个最小元素之前的部分排序的序列,用______方法最快。 A.冒泡排序 B.快速排序 C.希尔排序 D.堆排序 E.简单选择排序 3.将两个各有N个元素的有序表归并成一个有序表,其最小的比较次数是______。 A.N B.2N-1 C.2N D.N-1 4.就平均性能而言,目前最好的内排序方法是______排序法。 A.冒泡排序 B.希尔排序 C.插入排序 D.快速排序 5.若需要在O(nlog2n)的时间内完成对数据的排序,且要求排序是稳定的,则可选择的排序方法是______。 A.快速排序 B.堆排序 C.归并排序 D.直接插入排序 6.下面给出的四种排序方法中,排序过程中的比较次数与排序方法无关的是______。 A.选择排序法 B.插入排序法 C.快速排序法 D.堆排序法 7.数据序列{8,9,10,4,5,6,20,1,2}只能是下列排序算法中的()的两趟排序后的结果。

A.选择排序 B.冒泡排序 C.插入排序 D.堆排序 8.对一组数据{84,47,25,15,21}排序,第一趟的排序结果为15,47,25,84,21;第二趟排序的结果为15,21,25,84,47;第三趟排序的结果为15,21,25,47,84,则采用排序的方法是______。 A.选择排序 B.冒泡排序 C.快速排序 D.插入排序 9.下列排序算法中______排序在一趟结束后不一定能选出一个元素放在其最终位置上。 A.选择排序 B.冒泡排序 C.归并排序 D.堆排序 10.在下面的排序方法中,辅助空间为O(n)的是______。 A.希尔排序 B.堆排序 C.选择排序 D.归并排序 11.直接插入排序在最好的情况下的时间复杂度为______。 A.O(log2n) B.O(n) C. O(nlog2n) D.O(n2) 12.若用冒泡排序方法对序列{10,14,26,29,41,52}从大到小排序,需进行______次比较。 A.3 B.10 C.15 D.25 13.对序列{15,9,7,8,20,-1,4}用希尔排序方法排序,经过一趟后序列变为{15,-1,4,8,20,9,7},则该次采用的增量是 ______。 A.1 B.4 C.3 D.2 14.对下列关键字序列用快速排序法进行排序,速度最快的情形是

数据结构课后习题解答第十章 内部排序

第十章内部排序 10.23 void Insert_Sort1(SqList &L)//监视哨设在高下标端的插入排序算法 { k=L.length; for(i=k-1;i;--i) //从后向前逐个插入排序 if(L.r[i].key>L.r[i+1].key) { L.r[k+1].key=L.r[i].key; //监视哨 for(j=i+1;L.r[j].key>L.r[i].key;++j) L.r[j-1].key=L.r[j].key; //前移 L.r[j-1].key=L.r[k+1].key; //插入 } }//Insert_Sort1 10.24 void BiInsert_Sort(SqList &L)//二路插入排序的算法 { int d[MAXSIZE]; //辅助存储 x=L.r.key;d=x; first=1;final=1; for(i=2;i<=L.length;i++) { if(L.r[i].key>=x) //插入前部 { for(j=final;d[j]>L.r[i].key;j--) d[j+1]=d[j]; d[j+1]=L.r[i].key; final++; } else //插入后部 { for(j=first;d[j]

for(i=first,j=1;d[i];i=i%MAXSIZE+1,j++)//将序列复制回去 L.r[j].key=d[i]; }//BiInsert_Sort 10.25 void SLInsert_Sort(SLList &L)//静态链表的插入排序算法 { L.r[0].key=0;L.r[0].next=1; L.r[1].next=0; //建初始循环链表 for(i=2;i<=L.length;i++) //逐个插入 { p=0;x=L.r[i].key; while(L.r[L.r[p].next].keyL.r[i]; L.r[i].next=p; } p=q; }//for }//SLInsert_Sort 10.26 void Bubble_Sort1(int a[ ],int n)//对包含n个元素的数组a进行改进的冒泡排序{ change=n-1; //change指示上一趟冒泡中最后发生交换的元素 while(change) { for(c=0,i=0;ia[i+1])

第10章 排序

第十章排序 一、单项选择题 1.有一组序列48,36,68,99,75,24,58,52进行快速排序,要求结果按从小到大排序,则进行一次划分之后结果为_____。 A. (24 28 36) 48 (52 68 75 99) B. (28 36 24) 48 (75 99 68 52) C. (36 68 99) 48 (75 24 28 52) D. (28 36 24) 48 (99 75 68 52) 2.已知两个有序表,若要将它们组合成一个新的有序表,最好的方法是_____。 A. 希尔排序 B. 二分插入排序 C. 合并排序 D. 冒泡排序 3.排序译意风稳定的和不稳定的之分,下列四个说法中,只有______是正确的。 A. 快速排序是稳定的排序方法 B. 堆排序是不稳定的排序方法 C. 希尔排序是稳定的排序方法 D. 冒泡排序是不稳定的排序方法 4. 下列排序方法中,____方法是不稳定的。 A. 冒泡排序 B. 希尔排序 C. 冒泡排序 D. 直接插入排序 5. 下列排序方法中,在待排序的数据已经有序时,花费时间反而最多的是______。 A.快速排序 B. 希尔排序 C. 冒泡排序 D. 堆排序 6. 快速排序方法在最好情况下的时间复杂度为______。 A. O(n) B. O(n2) C. O(nlog2n) D.(log2n) 7. 下列排序方法中,时间复杂度不受数据初始状态影响,恒为O(n2)的是_______。 A. 堆排序 B.冒泡排序 C. 直接选择排序 D.快速排序 8. 依次将待排序序列中的元素和有序子序列合并为一个新的有序子序列的排序方法是____。 A. 快速排序 B.插入排序 C. 冒泡排序 D. 堆排序 9. 在表R中排序前已按键值递增顺序排序,则_____方法的比较次数最少。 A. 直接插入排序 B. 快速排序 C. 归并排序 D. 选择排序 10. 已知表A中每个元素距其最终位置不远,采用______方法最节省时间。 A. 堆排序 B. 冒泡排序 C. 快速排序 D. 直接选择排序 11. 在下列排序方法中,字比较的次数与记录的初始排列次序无关的是______。 A. 希尔排序 B. 冒泡排序 C. 插入排序 D. 选择排序 12. 快速排序方法在_____情况下最不利于发挥其长处。 A. 要排序的数据量太大 B. 要排序的数据中含有多个相同值 C. 要排序的数据已基本有序 D. 要排序的数据个数为奇数 13. 一组记录的关键字经一趟二路归并排序后得到含有5个长度为2的有序表:[25,48],[16,35],[79,82], [23,40],[36,72],在此基础上按二路归并排序方法再对该序列进行一趟归并后的结果为______。 A. 16,25,35,48,23,40,79,82,36,72 B. 16,25,35,48,79,82,23,36,40,72 C. 16,25,48,35,79,82,23,36,40,72 D. 16,25,35,48,79,23,36,40,72,82 14. 一组记录的关键码为(46,74,18,53,14,20,40,38,86,65),利用堆排序的方法建立的初始堆为____。 A. (14,18,38,46,65,40,20,53,86,74) B. (14,38,18,46,65,20,40,53,86,74) C. (14,18,20,38,40,46,53,65,74,86)

第十章试题(有答案)

一、填充题 1、按排序操作中所涉及的存储器的不同,可以把排序分成和两大类。 内部排序外部排序 2、主关键字是可以地标识一个数据元素的关键字。 唯一 3、希尔排序是属于插入排序的一种类型,它又被称为排序。 缩小增量 4、次关键字是用以标识数据元素的关键字。 多个 5、按关键字与排序结果的关系,可以把排序方法分成和两类。 稳定排序非稳定排序 6、在直接插入排序、希尔排序、直接选择排序、堆排序、快速排序和基数排序中,需要内存量最大的是。 基数排序 7、在堆排序和快速排序中,如果数据元素的原始序列接近正序或反序,则选用最好,如果数据元素的原始序列无序,则最好选用。 堆排序快速排序 8、对于由n个数据元素构成的序列实施冒泡排序时,最少的比较次数是。冒泡排序的结束条件是。 n-1 刚做完的一趟排序没有交换元素 9、对于由n个数据元素构成的序列实施冒泡排序时,数据元素的最少交换次数是,此情况说明该数据元素序列是。 0 已按排序要求有序的 二、单选题(每题2分,共24分) 1、如果采用直接选择排序法来排序一个长度为5,且已按相反顺序排序的数组,共需的比较次数是。 A、1 B、15 C、8 D、10 D 2、有一组随机数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 请根据以上情况,判断所用的排序方法是。 A、直接选择排序 B、快速排序 C、冒泡排序 D、Shall 排序 B 3、在所有学过的排序方法中,关键字比较次数与记录的初始排列次序无关的是。 A、冒泡排序 B、直接选择排序 C、直接插入排序 D、Shell排序 B 4、设有1000个无序的数据元素,希望用最快的速度挑选出其中前10个最大的元素,最好选用的排序方法是。 A、冒泡排序 B、基数排序 C、堆排序 D、快速排序 C 5、在待排元素序列基本有序的前提下,下面给出的几种排序方法效率最高的是。 A、直接插入排序 B、直接选择排序 C、归并排序 D、快速排序 A 6、现有一待排序列为49,38,65,97,76,13,27,50,如果以第一个数据元素49为支撑元素,在经过一趟快速排序后的结果序列是。 A、27,38,65,97,76,13,49,50 B、27,38,49,97,76,13,65,50 C、27,38,13,49,76,97,65,50 D、27,38,13,97,76,49,65,50 C 7、在下面给出的几种排序方法中,从未排序之序列中依次取出元素与已经排好的序列(开始为空)中的元素进行比较以确定其在已排序列中的位置的排序方法是。 A、冒泡排序 B、希尔排序 C、快速排序 D、直接插入排序 D

数据结构第10章排序练习及答案

9.1选择题 1.从末排序的序列中依次取出一个元素与已排序序列中的元素依次进行比较,然后将其放在排序序列的合适位置,该排序方法称为()排序法。 A)插入B)选择C)希尔D)二路归并 【答案】A 2.下面各种排序方法中,最好情况下时间复杂度为O(n)的是() A)快速排序B)直接插入排序C)堆排序D)归并排序 【答案】B 3.用某种排序方法对线性表(25,84,21,47,15,27,68,35,20)进行排序时,无序序列的变化情况如下: 25 84 21 47 15 27 68 35 20 20 15 21 25 47 27 68 35 84 15 20 21 25 35 27 47 68 84 15 20 21 25 27 35 47 68 84 则所采用的排序方法是() A)选择排序B)希尔排序C)归并排序D)快速排序 【答案】D 4.下面给出的四种排序法中,()排序是不稳定排序法。 A)插入B)冒泡C)二路归并D)堆 【答案】D 5.快速排序方法在()情况下最不利于发挥其长处。 A)要排序的数据量太大 B)要排序的数据中含有多个相同值 C)要排序的数据已基本有序 D)要排序的数据个数为奇数 【答案】C 6.一组记录的关键码为(46,79,56,38,40,84),则利用快速排序的方法,以第一个记录为基准得到的一次划分结果为() A)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 【答案】C 7.对记录的关键码{50,26,38,80,70,90,8,30,40,20}进行排序,各趟排序结束时的结果为: 50,26,38,80,70,90 ,8,30,40,20 50,8,30,40,20,90,26,38,80,70 26,8,30,40,20,80,50,38,90,70 8,20,26,30,38,40,50,70,80,90 其使用的排序方法是() A)快速排序B)基数排序C)希尔排序D)归并排序 【答案】C 8.以下序列不是堆的是()

第10章 排序练习题及答案

第十章排序 一、选择题 1.某内排序方法的稳定性是指( D )。 A.该排序算法不允许有相同的关键字记录B.该排序算法允许有相同的关键字记录C.平均时间为0(n log n)的排序方法D.以上都不对 2.下列排序算法中,其中( D )是稳定的。 A. 堆排序,冒泡排序 B. 快速排序,堆排序 C. 直接选择排序,归并排序 D. 归并排序,冒泡排序 3.稳定的排序方法是( B ) A.直接插入排序和快速排序B.折半插入排序和起泡排序 ] C.简单选择排序和四路归并排序D.树形选择排序和shell排序 4.下列排序方法中,哪一个是稳定的排序方法( B) A.直接选择排序B.二分法插入排序C.希尔排序D.快速排序 5.若要求尽可能快地对序列进行稳定的排序,则应选(B)。 A.快速排序 B.归并排序 C.冒泡排序 6.如果待排序序列中两个数据元素具有相同的值,在排序前后它们的相互位置发生颠倒,则称该排序算法是不稳定的。( CE )就是不稳定的排序方法。 A.起泡排序B.归并排序C.Shell排序D.直接插入排序E.简单选择排序 7.若需在O(nlog2n)的时间内完成对数组的排序,且要求排序是稳定的,则可选择的排序方法是( C )。 A. 快速排序 B. 堆排序 C. 归并排序 D. 直接插入排序 8.下面的排序算法中,不稳定的是( CDF ) ! A.起泡排序 B.折半插入排序 C.简单选择排序 D.希尔排序 E.基数排序 F.堆排序。9.下列内部排序算法中: A.快速排序 B.直接插入排序 C. 二路归并排序 D. 简单选择排序 E. 起泡排序 F. 堆排序(1)其比较次数与序列初态无关的算法是(CDF )(2)不稳定的排序算法是(ADF )(3)在初始序列已基本有序(除去n个元素中的某k个元素后即呈有序,k<

相关文档