数据结构 第9章 内部排序(作业)
- 格式:ppt
- 大小:972.00 KB
- 文档页数:53
第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次比较的算法思想。
习题九排序一、单项选择题1.下列内部排序算法中:A.快速排序 B.直接插入排序C. 二路归并排序D.简单选择排序E. 起泡排序F.堆排序(1)其比较次数与序列初态无关的算法是()(2)不稳定的排序算法是()(3)在初始序列已基本有序(除去n 个元素中的某 k 个元素后即呈有序, k<<n)的情况下,排序效率最高的算法是()(4)排序的平均时间复杂度为O(n?logn)的算法是()为 O(n?n) 的算法是()2.比较次数与排序的初始状态无关的排序方法是( )。
A.直接插入排序B.起泡排序C.快速排序D.简单选择排序3.对一组数据( 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.插入4.下列排序算法中 ( )排序在一趟结束后不一定能选出一个元素放在其最终位置上。
A. 选择B.冒泡C.归并D.堆5.一组记录的关键码为(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)6.下列排序算法中,在待排序数据已有序时,花费时间反而最多的是()排序。
A.冒泡 B. 希尔C. 快速D. 堆7.就平均性能而言,目前最好的内排序方法是() 排序法。
A. 冒泡B.希尔插入C.交换D.快速8.下列排序算法中,占用辅助空间最多的是:()A. 归并排序B.快速排序C.希尔排序D.堆排序9.若用冒泡排序方法对序列 {10,14,26,29,41,52}从大到小排序,需进行()次比较。
数据结构第9章排序数据结构第9章排序第9章排名本章主要内容:1、插入类排序算法2、交换类排序算法3、选择类排序算法4、归并类排序算法5、基数类排序算法本章重点难点1、希尔排序2、快速排序3、堆排序4.合并排序9.1基本概念1.关键字可以标识数据元素的数据项。
如果一个数据项可以唯一地标识一个数据元素,那么它被称为主关键字;否则,它被称为次要关键字。
2.排序是把一组无序地数据元素按照关键字值递增(或递减)地重新排列。
如果排序依据的是主关键字,排序的结果将是唯一的。
3.排序算法的稳定性如果要排序的记录序列中多个数据元素的关键字值相同,且排序后这些数据元素的相对顺序保持不变,则称排序算法稳定,否则称为不稳定。
4.内部排序与外部排序根据在排序过程中待排序的所有数据元素是否全部被放置在内存中,可将排序方法分为内部排序和外部排序两大类。
内部排序是指在排序的整个过程中,待排序的所有数据元素全部被放置在内存中;外部排序是指由于待排序的数据元素个数太多,不能同时放置在内存,而需要将一部分数据元素放在内存中,另一部分放在外围设备上。
整个排序过程需要在内存和外存之间进行多次数据交换才能得到排序结果。
本章仅讨论常用的内部排序方法。
5.排序的基本方法内部排序主要有5种方法:插入、交换、选择、归并和基数。
6.排序算法的效率评估排序算法的效率主要有两点:第一,在一定数据量的情况下,算法执行所消耗的平均时间。
对于排序操作,时间主要用于关键字之间的比较和数据元素的移动。
因此,我们可以认为一个有效的排序算法应该是尽可能少的比较和数据元素移动;第二个是执行算法所需的辅助存储空间。
辅助存储空间是指在一定数据量的情况下,除了要排序的数据元素所占用的存储空间外,执行算法所需的存储空间。
理想的空间效率是,算法执行期间所需的辅助空间与要排序的数据量无关。
7.待排序记录序列的存储结构待排序记录序列可以用顺序存储结构和和链式存储结构表示。
在本章的讨论中(除基数排序外),我们将待排序的记录序列用顺序存储结构表示,即用一维数组实现。
第九章查找一、填空题1.在数据的存放无规律而言的线性表中进行检索的最佳方法是顺序查找(线性查找) 。
2.线性有序表(a i,a2,a3,…,a256)是从小到大排列的,对一个给定的值k,用二分法检索表中与k相等的元素,在查找不成功的情况下,最多需要检索_8 次。
设有100个结点,用二分法查找时,最大比较次数是_7_ ____________ 。
3•假设在有序线性表a[1..2O]上进行折半查找,则比较一次查找成功的结点数为1;比较两次查找成功的结点数为_2 ___________ ;比较四次查找成功的结点数为8 ,其下标从小到大依次是1,3,6,8,11,13,16,19 _ ,平均查找长度为 3.7 。
解:显然,平均查找长度二0( log 2n) <5次(25)。
但具体是多少次,则不应当按照公式ASL =U|°g2(n⑴来计算(即(21 X log 221) /20 = 4.6次并不正确!)。
因为这是在假设n = 2m-1 n 的情况下推导出来的公式。
应当用穷举法罗列:全部元素的查找次数为=(1 + 2X 2+ 4X 3+ 8X 4+ 5X 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<m)个不同的关键码插入到散列表中,解决冲突的方法是用线性探测法。
如果这n个关键码的散列地址都相同,贝U探测的总次数是n(n-1)/2= ( 1 土2+…+ n-1 )。
(而任一元素查找次数 < n-1)&设一哈希表表长M为100,用除留余数法构造哈希函数,即H( K) =K MOIP ( P<=M ,为使函数具有较好性能,P应选(97 )9、在各种查找方法中,平均查找长度与结点个数无关的是哈_______10、对线性表进行二分查找时,要求线性表必须以顺序方式存储,且结点按关键字有序排列。
一、单选题1、对关键字序列(21,19,37,5,2),经直接插入排序法由小到大排序,第一趟后所得结果为()。
A.(19,21,5,2,37)B.(19,21,37,5,2)C.(19,21,2,5,37)D.(19,21,5,37,2)正确答案:B2、对关键字序列(21,19,37,5,2),经冒泡排序法由小到大排序,第一趟后所得结果为()。
A.(19,21,37,5,2)B.(19,21,2,5,37)C.(19,21,5,37,2)D.(19,21,5,2,37)正确答案:D3、对关键字序列(149,138,165,197,176,113,127),采用基数排序的第一趟之后所得结果为()。
A.(113,165,176,197,127,138,149)B.(113,165,176,127,197,138,149)C.(113,127,138,149,165,176,197)D.(149,138,165,197,176,113,127)正确答案:A4、下列各项键值()序列不是堆的。
A.(5,23,68,16,94)B.(5,23,16,94,68)C.(5,16,23,68,94)D.(5,23,16,68,94)正确答案:A5、假设一组待排序的关键字序列为(24,62,36,19),要求从小到大进行排序,()是归并排序的过程。
A.(24,62,36,19)(24,36,62,19)(19,24,36,62)B.(24,62,19,36)(19,24,36,62)C.(62,24,36,19)(19,24,36,62)D.(24,19,36,62)(24,19,36,62)(19,24,36,62)正确答案:B6、在第一趟排序之后,不能确保将数据表中某一个元素放在其最终位置上的排序算法是()。
A.归并排序B.快速排序C.冒泡排序D.选择排序正确答案:A7、对于下列排序,()的时间效率与关键字初始序列有直接关系。
数据结构习题及答案(3)第九章排序⼀、选择题1.在所有排序⽅法中,关键字⽐较的次数与记录得初始排列次序⽆关的是()(A)希尔排序(B)起泡排序(C)插⼊排序(D)选择排序参考答案:D2.设有1000个⽆序的元素,希望⽤最快的速度挑选出其中前10个最⼤的元素,最好()排序法。
(A)起泡排序(B)快速排序(C)堆排序(D)基数排序参考答案:C3.在待排序的元素序列基本有序的前提下,效率最⾼的排序⽅法是()(A)插⼊排序(B)选择排序(C)快速排序(D)归并排序参考答案:A4.⼀组记录的排序码为(46,79,56,38,40,84),则利⽤堆排序的⽅法建⽴的初始推为()。
(A)79,46,56,38,40,80 (B)84,79,56,38,40,46(C)84,79,56,46,40,38 (D)84,56,79,40,46,38参考答案:B5.⼀组记录的关键码为(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参考答案:C6.⼀组记录的排序码为(25,48,16,35,79,82,23,40,36,72),其中含有5个长度为2的有序表,按归并排序的⽅法对该序列进⾏⼀趟归并后的结果为()。
(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参考答案:A7.排序⽅法中,从未排序序列中依次取出元素与⼰排序序列(初始时为空)中的元素进⾏⽐较,将其放⼊⼰排序序列的正确位置上的⽅法,称为()(A)希尔排序(B)起泡排序(C)插⼊排序(D)选择排序参考答案:C8.排序⽅法中,从未排序序列中挑选元素并将其依次放⼊⼰排序序列(初始为空)的⼀端的⽅法,称为()(A)希尔排序(B)归并排序(C)插⼊排序(D)选择排序参考答案:D9.⽤某种排序⽅法对线性表(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,845则所采⽤的排序⽅法是()。
《数据结构》第九章习题参考答案一、判断题(在正确说法的题后括号中打“√”,错误说法的题后括号中打“×”)1、快速排序是一种稳定的排序方法。
(×)2、在任何情况下,归并排序都比简单插入排序快。
(×)3、当待排序的元素很大时,为了交换元素的位置,移动元素要占用较多的时间,这是影响时间复杂度的主要因素。
(√)4、内排序要求数据一定要以顺序方式存储。
(×)5、直接选择排序算法在最好情况下的时间复杂度为O(n)。
( ×)6、快速排序总比简单排序快。
( ×)二、单项选择题1.在已知待排序文件已基本有序的前提下,效率最高的排序方法是(A)。
A.直接插入排序B.直接选择排序C.快速排序D.归并排序2.下列排序方法中,哪一个是稳定的排序方法?(B)A.直接选择排序B.折半插入排序C.希尔排序D.快速排序3、比较次数与排序的初始状态无关的排序方法是( B)。
A.直接插入排序B.起泡排序(时间复杂度O(n2))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)。
A. 选择B. 冒泡C. 快速D. 插入5、快速排序方法在(D)情况下最不利于发挥其长处。
A. 要排序的数据量太大B. 要排序的数据中含有多个相同值C. 要排序的数据个数为奇数D. 要排序的数据已基本有序6、用某种排序方法对线性表{25,84,21,47,15,27,68,35,20}进行排序,各趟排序结束时的结果为:(基准)20,21,15,25,84,27,68,35,47(25)15,20,21,25,47,27,68,35,84(左20右47)15,20,21,25,35,27,47,68,84(左35右68)15,20,21,25,27,35,47,68,84 ;则采用的排序方法为(C)。
《数据结构》习题汇编09-第九章-排序-试题数据结构课程(本科)第九章试题一、单项选择题1.若待排序对象序列在排序前已按其排序码递增顺序排列,则采用()方法比较次数最少。
A. 直接插入排序B. 快速排序C. 归并排序D. 直接选择排序2.如果只想得到1024个元素组成的序列中的前5个最小元素,那么用()方法最快。
A. 起泡排序B. 快速排序C. 直接选择排序D. 堆排序3.对待排序的元素序列进行划分,将其分为左、右两个子序列,再对两个子序列施加同样的排序操作,直到子序列为空或只剩一个元素为止。
这样的排序方法是()。
A. 直接选择排序B. 直接插入排序C. 快速排序D. 起泡排序4.对5个不同的数据元素进行直接插入排序,最多需要进行()次比较?A. 8B. 10C. 15D. 255.如果输入序列是已经排好顺序的,则下列算法中()算法最快结束?A. 起泡排序B. 直接插入排序C. 直接选择排序D. 快速排序6.如果输入序列是已经排好顺序的,则下列算法中()算法最慢结束?A. 起泡排序B. 直接插入排序C. 直接选择排序D. 快速排序7.下列排序算法中()算法是不稳定的。
A. 起泡排序B. 直接插入排序C. 基数排序D. 快速排序8.假设某文件经过内部排序得到100个初始归并段,那么如果要求利用多路平衡归并在3 趟内完成排序,则应取的归并路数至少是()。
A. 3B. 4C. 5D. 69.采用任何基于排序码比较的算法,对5个互异的整数进行排序,至少需要()次比较。
A. 5B. 6C. 7D. 810.下列算法中()算法不具有这样的特性:对某些输入序列,可能不需要移动数据对象即可完成排序。
A. 起泡排序B. 希尔排序C. 快速排序D. 直接选择排序11.使用递归的归并排序算法时,为了保证排序过程的时间复杂度不超过O(nlog2n),必须做到()。
A. 每次序列的划分应该在线性时间内完成B. 每次归并的两个子序列长度接近C. 每次归并在线性时间内完成D. 以上全是12.在基于排序码比较的排序算法中,()算法的最坏情况下的时间复杂度不高于O(nlog2n)。
数据结构第九章排序1、内排序方法中,从未排序序列中依次取出元素与已排序序列中的元素进行比较,将其放入已排序序列的正确位置上的方法,称为( )。
——[单选题]A 希尔排序B 冒泡排序C 直接插入排序D 简单选择排序正确答案:C2、对有n个记录的表进行直接插入排序,在最坏情况下需进行( )次关键字比较。
——[单选题]A n-1B n+1C n/2D n(n-1)/2正确答案:D3、在下列算法中,( )算法可能出现下列情况:在最后一趟开始之前,所有的元素都不在其最终的位置上。
——[单选题]A 堆排序B 冒泡排序C 直接插入排序D 快速排序正确答案:C4、对数据序列{15,9,7,8,20,-1,4}进行排序,进行一趟后数据的排序变为{9,15,7,8,20,-1,4},则采用的是( )算法。
——[单选题]A 简单选择排序B 冒泡排序C 直接插入排序D 堆排序正确答案:C5、数据序列{5,4,15,10,3,1,9,6,2}是某排序方法第一趟后的结果,该排序算法可能是( )。
——[单选题]A 冒泡排序B 二路归并排序C 堆排序D 简单选择排序正确答案:B6、从未排序序列中挑选元素,并将其依次插入已排序序列的一端的方法,称为( )。
——[单选题]A 希尔排序B 归并排序C 直接插入排序D 简单选择排序正确答案:D7、在以下排序方法中,关键字比较的次数与元素的初始排列次序无关的是( )。
——[单选题]A 希尔排序B 冒泡排序C 插入排序D 简单选择排序正确答案:D8、对n个不同的关键字进行递增冒泡排序,在下列哪种情况下比较的次数最多( )。
——[单选题]A 元素无序B 元素递增有序C 元素递减有序D 都一样正确答案:C9、对数据序列(8,9,10,4,5,6,20,1,2)进行递增排序,采用每趟冒出一个最小元素的冒泡排序算法,需要进行的趟数至少是( )。
——[单选题]A 3B 4C 5D 8正确答案:C10、为实现快速排序法,待排序序列最好采用的存储方式是( )。
数据结构课程(本科)第九章试题一、单项选择题1.若待排序对象序列在排序前已按其排序码递增顺序排列,则采用()方法比较次数最少。
A. 直接插入排序B. 快速排序C. 归并排序D. 直接选择排序2.如果只想得到1024个元素组成的序列中的前5个最小元素,那么用()方法最快。
A. 起泡排序B. 快速排序C. 直接选择排序D. 堆排序3.对待排序的元素序列进行划分,将其分为左、右两个子序列,再对两个子序列施加同样的排序操作,直到子序列为空或只剩一个元素为止。
这样的排序方法是()。
A. 直接选择排序B. 直接插入排序C. 快速排序D. 起泡排序4.对5个不同的数据元素进行直接插入排序,最多需要进行()次比较?A. 8B. 10C. 15D. 255.如果输入序列是已经排好顺序的,则下列算法中()算法最快结束?A. 起泡排序B. 直接插入排序C. 直接选择排序D. 快速排序6.如果输入序列是已经排好顺序的,则下列算法中()算法最慢结束?A. 起泡排序B. 直接插入排序C. 直接选择排序D. 快速排序7.下列排序算法中()算法是不稳定的。
A. 起泡排序B. 直接插入排序C. 基数排序D. 快速排序8.假设某文件经过内部排序得到100个初始归并段,那么如果要求利用多路平衡归并在3 趟内完成排序,则应取的归并路数至少是()。
A. 3B. 4C. 5D. 69.采用任何基于排序码比较的算法,对5个互异的整数进行排序,至少需要()次比较。
A. 5B. 6C. 7D. 810.下列算法中()算法不具有这样的特性:对某些输入序列,可能不需要移动数据对象即可完成排序。
A. 起泡排序B. 希尔排序C. 快速排序D. 直接选择排序11.使用递归的归并排序算法时,为了保证排序过程的时间复杂度不超过O(nlog2n),必须做到()。
A. 每次序列的划分应该在线性时间内完成B. 每次归并的两个子序列长度接近C. 每次归并在线性时间内完成D. 以上全是12.在基于排序码比较的排序算法中,()算法的最坏情况下的时间复杂度不高于O(nlog2n)。
数据结构09内部排序9.1 排序地基本概念9.2 插入排序9.3 交换排序9.4 选择排序9.5 归并排序9.6 基数排序车次出发站/到达站出发时间到达时间…G7031南京/上海5:517:42…G7033南京南/上海6:108:11…G7121南京南/上海南6:178:16…G7035南京南/上海6:318:31…G7037南京南/上海6:508:51…G7039南京南/上海虹桥6:599:03…G7001南京/上海7:008:39…G7197南京南/上海7:158:50………………按出发时间排序排序:设有记录序列{R1, R2,…, Rn},其相应地关键字序列为{K1,K2,…, Kn},若存在某种确定地关系 Kx≤Ky≤…≤Kz,其中 1≤x, y, z≤n 且x,y,z 各不相同,则将记录序列{R1, R2,…, Rn}排成按关键字有序地序列{Rx, Ry,…, Rz}地操作称为排序。
排序依据地关系是任意地,通常使用小于(递增),大于(递减)等关系。
稳定与不稳定:若有一个待排序列为{R1, R2, …, Ri, …, Rn} (i ≠ 2),其对应地关键字序列为{K1, K2, …, Ki, …, Kn},若R2与Ri地关键字K2=Ki,如果排序前后,它们地相对位置保持不变,则这种排序方法是稳定地,否则是不稳定地。
正序与逆序:若待排序序列中地记录已按关键字排好序,则称此记录序列为正序;若待排序序列中记录地排列顺序与排序后地排列顺序正好相反,称此记录序列为逆序。
一趟:在排序过程中,将待排序地记录序列扫描一遍。
单关键字排序:根据一个关键字进行地排序。
多关键字排序:根据多个关键字进行地排序,主要针对关键字有重复地情况。
内部排序:在排序地整个过程中,待排序地所有记录全部被放置在内存中地排序方法,也简称为内排序。
外部排序:由于待排序地记录个数太多,不能同时放置在内存,而需求将一部分记录放置在内存中,另一部分记录放置在外存中,整个排序过程需求在内外存之间多次交换数据才能得到排序结果地排序方法,也简称为外排序。