数据结构(C语言)第10章排序自测题
中南大学数据结构与算法第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)快速排序:(方括号表示无序区,层表示对应的递归树的层数)初始态:[265 301 751 129 937 863 742 694 076 438]第二层:[076 129] 265 [751 937 863 742 694 301 438] 第三层:076 [129] 265 [438 301 694 742] 751 [863 937] 第四层:076 129 265 [301] 438 [694 742] 751 863 [937] 第五层:076 129 265 301 438 694 [742] 751 863 937第六层:076 129 265 301 438 694 742 751 863 937 (5)直接选择排序:(方括号为无序区)初始态[265 301 751 129 937 863 742 694 076 438]第一趟:076 [301 751 129 937 863 742 694 265 438]第二趟:076 129 [751 301 937 863 742 694 265 438]第三趟:076 129 265[ 301 937 863 742 694 751 438]第四趟:076 129 265 301 [937 863 742 694 751 438]第五趟:076 129 265 301 438 [863 742 694 751 937]第六趟:076 129 265 301 438 694 [742 751 863 937]第七趟:076 129 265 301 438 694 742 [751 863 937]第八趟:076 129 265 301 438 694 742 751 [937 863]第九趟:076 129 265 301 438 694 742 751 863 937(6)堆排序:(通过画二叉树可以一步步得出排序结果)初始态[265 301 751 129 937 863 742 694 076 438]建立初始堆:[937 694 863 265 438 751 742 129 075 301]第一次排序重建堆:[863 694 751 765 438 301 742 129 075] 937第二次排序重建堆:[751 694 742 265 438 301 075 129] 863 937第三次排序重建堆:[742 694 301 265 438 129 075] 751 863 937第四次排序重建堆:[694 438 301 265 075 129] 742 751 863 937第五次排序重建堆:[438 265 301 129 075] 694 742 751 863 937第六次排序重建堆:[301 265 075 129] 438 694 742 751 863 937第七次排序重建堆:[265 129 075] 301 438 694 742 751 863 937第八次排序重建堆:[129 075]265 301 438 694 742 751 863 937第九次排序重建堆:075 129 265 301 438 694 742 751 863 937(7)归并排序(为了表示方便,采用自底向上的归并,方括号为有序区)初始态:[265] [301] [751] [129] [937] [863] [742] [694] [076] [438]第一趟:[265 301] [129 751] [863 937] [694 742] [076 438]第二趟:[129 265 301 751] [694 742 863 937] [076 438]第三趟:[129 265 301 694 742 751 863 937] [076 438]第四趟:[076 129 265 301 438 694 742 751 863 937](8)基数排序(方括号内表示一个箱子共有10个箱子,箱号从0到9)初始态:265 301 751 129 937 863 742 694 076 438第一趟:[] [301 751] [742] [863] [694] [265] [076] [937] [438] [129]第二趟:[301] [] [129] [937 438] [742] [751] [863 265] [076] [] [694]第三趟:[075] [129] [265] [301] [438] [] [694] [742 751] [863] [937]在上面的排序方法中,直接插入排序、冒泡排序、归并排序和基数排序是稳定的,其他排序算法均是不稳定的,现举实例如下:以带*号的表示区别。
数据结构答案 第10章 排序学习与指导

第10章排序10.1 知识点分析1.排序基本概念:(1)排序将数据元素的任意序列,重新排列成一个按关键字有序(递增或递减)的序列的过程称为排序。
(2)排序方法的稳定和不稳定若对任意的数据元素序列,使用某个排序方法,对它按关键字进行排序,若对原先具有相同键值元素间的位置关系,排序前与排序后保持一致,称此排序方法是稳定的;反之,则称为不稳定的。
(3)内排序整个排序过程都在内存进行的排序称为内排序,本书仅讨论内排序。
(4)外排序待排序的数据元素量大,以致内存一次不能容纳全部记录,在排序过程中需要对外存进行访问的排序称为外排序。
2.直接插入排序直接插入排序法是将一个记录插到已排序好的有序表中,从而得到一个新的,记录数增1的有序表。
3.二分插入排序二分插入排序法是用二分查找法在有序表中找到正确的插入位置,然后移动记录,空出插入位置,再进行插入的排序方法。
4.希尔排序希尔排序的基本思想是:先选取一个小于n的整数d1作为第一个增量,把待排序的数据分成d1个组,所有距离为d1的倍数的记录放在同一个组内,在各组内进行直接插入排序,每一趟排序会使数据更接近于有序。
然后,取第二个增量d2,d2< d1,重复进行上述分组和排序,直至所取的增量d i=1(其中d i< d i-1 < ……< d2< d1),即所有记录在同一组进行直接插入排序后为止。
5.冒泡排序冒泡法是指每相邻两个记录关键字比大小,大的记录往下沉(也可以小的往上浮)。
每一遍把最后一个下沉的位置记下,下一遍只需检查比较到此为止;到所有记录都不发生下沉时,整个过程结束。
6.快速排序快速排序法是通过一趟排序,将待排序的记录组分割成独立的两部分,其中前一部分记录的关键字均比枢轴记录的关键字小;后一部分记录的关键字均比枢轴记录的关键字大,枢轴记录得到了它在整个序列中的最终位置并被存放好。
第二趟再分别对分割成两部分子序列,再进行快速排序,这两部分子序列中的枢轴记录也得到了最终在序列中的位置而被存放好,并且它们又分别分割出独立的两个子序列……。
【免费下载】数据结构第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
数据结构第10章 习题答案

1.下列排序算法中,其中( D )是稳定的。
A. 堆排序,冒泡排序B. 快速排序,堆排序C. 直接选择排序,归并排序D. 归并排序,冒泡排序2.有一组数据(15,9,7,8,20,-1,7,4)用快速排序的划分方法进行一趟划分后数据的排序为 ( A )(按递增序)。
A.下面的B,C,D都不对。
B.9,7,8,4,-1,7,15,20C.20,15,8,9,7,-1,4,7 D. 9,4,7,8,7,-1,15,203.下列排序算法中,在每一趟都能选出一个元素放到其最终位置上,并且其时间性能受数据初始特性影响的是:( B )。
A. 直接插入排序B. 快速排序C. 直接选择排序D. 堆排序4.如果只想得到1000个元素组成的序列中第5个最小元素之前的部分排序的序列,用( D )方法最快。
A.起泡排序 B.快速排列 C.Shell排序 D.堆排序 E.简单选择排序5.从未排序序列中依次取出一个元素与已排序序列中的元素依次进行比较,然后将其放在已排序序列的合适位置,该排序方法称为( A )排序法。
A. 插入B. 选择C. 希尔D. 二路归并6. 在排序算法中,每次从未排序的记录中挑出最小(或最大)关键码字的记录,加入到已排序记录的末尾,该排序方法是( A )。
A. 选择B. 冒泡C. 插入D. 堆7. 若用冒泡排序方法对序列{10,14,26,29,41,52}从大到小排序,需进行( C )次比较。
A. 3B. 10C. 15D. 258. 对序列{15,9,7,8,20,-1,4,} 用希尔排序方法排序,经一趟后序列变为{15,-l,4,8,20,9,7}则该次采用的增量是 ( B )A. lB. 4C. 3D. 29. 堆排序是( E )类排序A. 插入B. 交换C. 归并D. 基数E. 选择10.排序方法有许多种,(1)法从未排序的序列中依次取出元素,与已排序序列(初始时为空)中的元素作比较,将其放入已排序序列的正确位置上;(2)法从未排序的序列中挑选元素,并将其依次放入已排序序列(初始时为空)的一端;交换排序方法是对序列中的元素进行一系列比较,当被比较的两元素逆序时,进行交换;(3)和(4)是基于这类方法的两种排序方法,而(4)是比(3)效率更高的方法;(5)法是基于选择排序的一种排序方法,是完全二叉树结构的一个重要应用。
第10章自测题

第十章自测题一、填空题1.三相异步电动机的力能指标是指,起动性能指标是指。
2.三相异步电动机的过载能力是指,它反映了电动机能力。
3.异步电动机采用Y-D降压起动时,起动电流为直接起动时的倍,起动转矩为直接起动时的倍。
4.异步电动机采用变比为2的自耦变压器降压起动时,起动电流为直接起动时的倍,起动转矩为直接起动时的倍。
5.绕线式异步电动机采用转子串联电阻起动,可以使起动电流__ _,起动转矩。
6.异步电动机的变极调速,就是改接定子绕组接法,使每相绕组的一半线圈中的电流,为了保证变极调速前后电动机的转向不变,应当。
7.异步电动机串级调速时,在转子回路中串入一个附加电动势,该电动势的频率与相同,该电动势的相位与转子电动势相位。
8.异步电动机拖动恒转矩负载进行变频调速时,为了保证不变,则U1应随f1按规律调节。
9.电力变压器在运行时效率较高,而异步电动机在运行时效率较高。
10.如果电源电压不对称,异步电动机气隙中不仅有正转旋转磁场,还有磁场,该磁场和转子电流作用产生的电磁转矩,对转子起作用。
二、选择题1.一台三相笼型异步电动机的k T =,k I=6,定子绕组为三角形联结。
若供电变压器允许电动机的起动电流不超过12I N,当拖动额定负载转矩起动时,则首选的起动方法是( )。
①直接起动;② Y-D降压起动;③自耦变压器降压起动;④以上三种方法均可以。
2.异步电动机的机械负载愈重,其起动电流()。
①愈大;②愈小;③与负载轻重无关;④是额定电流的7倍。
3.一台三相异步电动机接到电压下降了10%的电源上,拖动额定转矩负载稳定运行,则这台电动机的电磁转矩为( )。
①T em=T N;②T em= ;③T em= ;④T em=。
4.异步电动机进行降压起动的目的是()。
①减小起动电流;②减小起动转矩;③减小起动时的铁耗;④使起动过程平稳。
5.定子绕组为Y联结的绕线式异步电动机,不能采用的起动方法是()。
①直接起动;② Y-D降压起动;③自耦变压器降压起动;④转子串电阻起动。
数据结构第10章排序练习及答案

9.1选择题1.从末排序的序列中依次取出一个元素与已排序序列中的元素依次进行比较,然后将其放在排序序列的合适位置,该排序方法称为()排序法。
A)插入B)选择C)希尔D)二路归并【答案】A2.下面各种排序方法中,最好情况下时间复杂度为O(n)的是()A)快速排序B)直接插入排序C)堆排序D)归并排序【答案】B3.用某种排序方法对线性表(25,84,21,47,15,27,68,35,20)进行排序时,无序序列的变化情况如下:25 84 21 47 15 27 68 35 2020 15 21 25 47 27 68 35 8415 20 21 25 35 27 47 68 8415 20 21 25 27 35 47 68 84则所采用的排序方法是()A)选择排序B)希尔排序C)归并排序D)快速排序【答案】D4.下面给出的四种排序法中,()排序是不稳定排序法。
A)插入B)冒泡C)二路归并D)堆【答案】D5.快速排序方法在()情况下最不利于发挥其长处。
A)要排序的数据量太大B)要排序的数据中含有多个相同值C)要排序的数据已基本有序D)要排序的数据个数为奇数【答案】C6.一组记录的关键码为(46,79,56,38,40,84),则利用快速排序的方法,以第一个记录为基准得到的一次划分结果为()A)38,40,46,56,79,84B)40,38,46,79,56,84C)40,38,46,56,79,84D)40,38,46,84,56,79【答案】C7.对记录的关键码{50,26,38,80,70,90,8,30,40,20}进行排序,各趟排序结束时的结果为:50,26,38,80,70,90 ,8,30,40,2050,8,30,40,20,90,26,38,80,7026,8,30,40,20,80,50,38,90,708,20,26,30,38,40,50,70,80,90其使用的排序方法是()A)快速排序B)基数排序C)希尔排序D)归并排序【答案】C8.以下序列不是堆的是()A)100,85,98,77,80,60,82,40,20,10,66B)100,98,85,82,80,77,66,60,40,20,10C)10,20,40,60,66,77,80,82,85,98,100D)100,85,40,77,80,60,66,98,82,10,20【答案】D【解析】根据堆采用完全二叉树的顺序存储形式及堆的特点,因第一个结点即根结点关键字值最大,则应建立一个大根堆,但依据此数据序列建立起堆后关键字值为40的左右孩子结点分别为60、66,不符合大根堆特点。
数据结构与算法复习题10(C语言版)

习10解答判断题:1.排序的功能是将一个数据元素(或记录)的任意序列,重新排成一个按关键字有序的序列。
( )答:TRUE2.直接插入排序的基本操作是将一个记录插入到已排好序的有序表中,从而得到一个新的、记录数增1的有序表。
( )答:TRUE3.使用简单选择排序方法无论记录的初始排列如何,所需进行的关键字间的比较次数相同。
( )答:TRUE4.用希尔(Shell)方法排序时,若关键字的初始排序杂乱无序,则排序效率就低。
()答:FALSE(希尔排序又称“缩小增量排序”,即每趟只对相同增量距离的关键字进行比较,这与关键字序列初始有序或无序无关)单选题:5.在对n个元素进行简单选择排序过程中,第i趟需从( )个元素中选择出最小值元素。
A.n-i+1 B. n-i C.i D. i+1答:A6. n个记录直接插入排序所需的记录最小比较次数是 ( )A. n-1B. 2(n-1)C. (n+2)(n-1)/2D. n答:A(注:如果初始记录序列就是一个符合要求的有序序列,则每趟操作只做一次比较,n-1趟操作仅需n-1次比较。
参见严蔚敏《(c语言版)数据结构》P.265) 7.若用起泡排序对关键字序列{18,16,14,12,10,8}进行从小到大的排序,所需进行的关键字比较总次数是()A.10 B. 15 C. 21 D. 34答:B (注:参见严蔚敏《(c语言版)数据结构》P.274, 此题所给的初始序列为“逆序”,需要进行n(n-1)/2 = 6×(6-1)/2 = 15次比较。
)8. 用起泡法对n个关键码排序,在最好情况下,只需做次比较;在最坏的情况下要做次比较。
答:n-1, n(n-1)/2 (注:参见严蔚敏《(c语言版)数据结构》P.273~274)9.在所有排序方法中,关键字比较次数与记录的初始排列无关的是( )。
A.希尔排序 B. 起泡排序 C. 插入排序 D.选择排序答:D10. 一组记录的关键字为(45,80,55,40,42,85),则利用堆排序的方法建立的初始堆为( )。
数据结构第10章习题

三、填空题
1. 设用希尔排序对数组{98,36,-9,0,47,23, 1,8,10,7}进行排序,给出的步长(也称增量 序列)依次是4,2,1则排序需__________趟, 写出第一趟结束后,数组中数据的排列次序 __________。 【南京理工大学 1997 三、5 (2分)】 2.若不考虑基数排序,则在排序过程中,主要进行 的两种基本操作是关键字的______和记录的 _____。 【北京邮电大学 2001 二、7 (4分)】 3.分别采用堆排序,快速排序,冒泡排序和归并排 序,对初态为有序的表,则最省时间的是_____ 算法,最费时间的是______算法。【福州大学 1998 二、10 (2分)】
பைடு நூலகம்
12.就排序算法所用的辅助空间而言,堆排序,快 速排序,归并排序的关系是( a ) A.堆排序〈 快速排序〈归并排序 B.堆排序 〈 归并排序〈 快速排序 C.堆排序〉 归并排序 〉快速排序 D.堆排 序 > 快速排序 > 归并排序 E.以上答案都不 对 【西安交通大学 1996 三、1 (3分)】 13.将两个各有N个元素的有序表归并成一个有序表, 其最少的比较次数是( a ) A.N B.2N-1 C.2N D.N-1
2.比较次数与排序的初始状态无关的排序方法是 ( d )。【北方交通大学 2000 二、2(2分)】
A.直接插入排序 D.简单选择排序 B.起泡排序 C.快速排序
3.数据序列(8,9,10,4,5,6,20,1,2)只能是 下列排序算法中的( c )的两趟排序后的结果。 【合肥工业大学 1999 一、3 (2分)】 A.选择排序 B.冒泡排序 C.插入排序 D.堆排序 4.数据序列(2,1,4,9,8,10,6,20)只能是下 列排序算法中的( a )的两趟排序后的结果。 A. 快速排序 B. 冒泡排序 C. 选择排序 D. 插入排序 5.对序列{15,9,7,8,20,-1,4}进行排序,进行 一趟后数据的排列变为{4,9,-1,8,20,7,15}; 则采用的是( c )排序。【南京理工大学 1998 一、8(2分)】 A. 选择 B. 快速 C. 希尔 D. 冒泡
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第9章排序
一、填空题(每空1分,共24分)
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. 在堆排序、快速排序和归并排序中,
若只从存储空间考虑,则应首先选取方法,其次选取方法,最后选取方法;
若只从排序结果的稳定性考虑,则应选取方法;
若只从平均情况下最快考虑,则应选取方法;
若只从最坏情况下最快并且要节省内存考虑,则应选取方法。
二、单项选择题(每小题1分,共18分)
1.将5个不同的数据进行排序,至多需要比较次。
A. 8 B. 9 C. 10 D. 25
2.排序方法中,从未排序序列中依次取出元素与已排序序列(初始时为空)中的元素进行比较,将其放入已排序序列的正确位置上的方法,称为
A. 希尔排序B. 冒泡排序C. 插入排序D. 选择排序3.从未排序序列中挑选元素,并将其依次插入已排序序列(初始时为空)的一端的方法,称为
A. 希尔排序B. 归并排序C. 插入排序D. 选择排序4.对n个不同的排序码进行冒泡排序,在下列哪种情况下比
较的次数最多。
A. 从小到大排列好的B. 从大到小排列好的
C. 元素无序D. 元素基本有序
5.对n个不同的排序码进行冒泡排序,在元素无序的情况下比较的次数为
A. n+1 B. n C. n-1 D. n(n-1)/2
6.快速排序在下列哪种情况下最易发挥其长处。
A. 被排序的数据中含有多个相同排序码
B. 被排序的数据已基本有序
C. 被排序的数据完全无序
D. 被排序的数据中的最大值和最小值相差悬殊
7.对有n个记录的表作快速排序,在最坏情况下,算法的时间复杂度是
A.O(n) B.O(n2) C.O(nlog2n) D.O(n3) 8.若一组记录的排序码为(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
9.下列关键字序列中,是堆。
A. 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
10.堆是一种排序。
A. 插入B.选择C. 交换D. 归并
11.堆的形状是一棵
A. 二叉排序树B.满二叉树
C. 完全二叉树D. 平衡二叉树
12.若一组记录的排序码为(46, 79, 56, 38, 40, 84),则利用堆排序的方法建立的初始堆为
A. 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 17.下述几种排序方法中,要求内存最大的是
A. 插入排序B.快速排序
C. 归并排序D. 选择排序。