第10章排序自测题答案

合集下载

数据结构复习题 第10章2021 12 16

数据结构复习题 第10章2021 12 16

数据结构复习题第10章2021 12 16数据结构复习题-第10章2021-12-16第10章内部排序一、选择题(每小题2分后,共20分后)1.从未排序序列中依次取出一个元素与已排序序列中的元素依次进行比较,然后放在已排序序列的合适位置,该排序方法称为()排序法。

a.插入排序b.挑选排序c.希尔排序d.二路福兰县排序2.下列排序算法中()排序在一趟结束后不一定能选出一个元素放在其最终位置上。

a.选择b.冒泡c.归并d.堆3.若一组记录的排序码为(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,794.排序方法中,从未排序序列中依次取出元素与已排序序列(初始时为空)中的元素进行比较,将其放入已排序序列的正确位置上的方法,称为()。

a.希尔排序b.冒泡排序c.插入排序d.挑选排序5.为同时实现快速排序算法,等待排序序列宜使用的存储方式就是()。

a.顺序存储b.散列存储c.链式存储d.索引存储6.若一组记录的排序码为(46,79,56,38,40,84),则利用堆排序的方法建立的初始堆为()。

a.79,46,56,38,40,84b.84,79,56,38,40,46c.84,79,56,46,40,38d.84,56,79,40,46,38二、判断题(每小题1分后,共10分后)1.对于n个记录的集合进行快速排序,所需要的平均时间是o(nlogn)。

()2.(101,88,46,70,34,39,45,58,66,10)是堆。

()三、填空题(每空1分,共10分)1.不仅须要采用内存,而且还要采用外存的排序称作。

2.若不考虑基数排序,则在排序过程中,主要进行的两种基本操作是关键字的和记录的。

四、应用题(共40分后)1.(6分)简述快速排序算法的基本思想。

【免费下载】数据结构第10章排序练习及答案

【免费下载】数据结构第10章排序练习及答案
9.一组记录的关键字为{45,80,55,40,42,85},则利用堆排序的方法建立的初始堆为 ( ) A)80,45,50,40,42,85 B)85,80,55,40,42, 45 C)85,80,55,45,42,40 D)85,55,80,42,45,40 【答案】B 10.一组记录的关键字为{25,50,15,35,80,85,20,40,36,70},其中含有 5 个长 度为 2 的有序表,用归并排序方法对该序列进行一趟归并后的结果为( ) A)15,25,35,50,20,40,80,85,36,70 B)15,25,35,50,80,20,85,40,70,36 C)15,25,50,35,80,85,20,36,40,70 D)15,25,35,50,80,20,36,40,70,85 【答案】A 【解析】对 5 个长度为 2 的有序表一趟归并后得到前两个长度为 4 的有序表和最后一个长 度为 2 的有序表,故选 A。 11.n 个元素进行冒泡排序的过程中,最好情况下的时间复杂度为( ) A)O(1) B)O(log2n) C)O(n2) D)O(n) 【答案】D 【解析】最好情况下至少需要一趟排序,即比较 n-1 次,故选 D。
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章内排序

数据结构教程李春葆课后答案第10章内排序

2 else d=d/3; } }
数据结构教程学习指导
(1)指出fun(a,n)算法的功能。 (2)当a[]={5,1,3,6,2,7,4,8}时,问fun(a,8)共执行几趟排序,各趟的排序 结果是什么? 答:(1)fun(a,n)算法的功能是采用增量递减为1/3的希尔排序方法对a数组中元素进 行递增排序。 (2)当a[]={5,1,3,6,2,7,4,8}时,执行fun(a,8)的过程如下: d=2:2 1 3 6 4 7 5 8 d=1:1 2 3 4 5 6 7 8 共有两趟排序。 4. 在实现快速排序的非递归算法时,可根据基准元素,将待排序序列划分为两个子 序列。若下一趟首先对较短的子序列进行排序,试证明在此做法下,快速排序所需要的栈 的深度为 O(log2n)。 答:由快速排序的算法可知,所需递归工作栈的深度取决于所需划分的最大次数。在 排序过程中每次划分都把整个待排序序列根据基准元素划分为左、右两个子序列,然后对 这两个子序列进行类似的处理。 设S(n)为对n个记录进行快速排序时平均所需栈的深度, 则: S(n)=
KeyType QuickSelect(RecType R[],int s,int t,int k) //在 R[s..t]序列中找第 k 小的元素 { int i=s,j=t; RecType tmp; if (s<t) //区间内至少存在 2 个元素的情况 { tmp=R[s]; //用区间的第 1 个记录作为基准 while (i!=j) //从区间两端交替向中间扫描,直至 i=j 为止 { while (j>i && R[j].key>=tmp.key) j--; //从右向左扫描,找第 1 个关键字小于 tmp 的 R[j] R[i]=R[j]; //将 R[j]前移到 R[i]的位置 while (i<j && R[i].key<=tmp.key) i++; //从左向右扫描,找第 1 个关键字大于 tmp 的 R[i] R[j]=R[i]; //将 R[i]后移到 R[j]的位置 } R[i]=tmp; if (k-1==i) return R[i].key; else if (k-1<i) return QuickSelect(R,s,i-1,k); //在左区间中递归查找 else return QuickSelect(R,i+1,t,k); //在右区间中递&& s==k-1) return R[k-1].key; else return -1; }

第10章 排序

第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. 在下列排序方法中,字比较的次数与记录的初始排列次序无关的是______。

《数据结构》期末考试复习题-第10章-排序

《数据结构》期末考试复习题-第10章-排序

第10章排序一、选择题1.某内排序方法的稳定性是指( )。

【南京理工大学 1997 一、10(2分)】A.该排序算法不允许有相同的关键字记录 B.该排序算法允许有相同的关键字记录C.平均时间为0(n log n)的排序方法 D.以上都不对2.下面给出的四种排序法中( )排序法是不稳定性排序法。

【北京航空航天大学 1999 一、10 (2分)】A. 插入B. 冒泡C. 二路归并D. 堆积3.下列排序算法中,其中()是稳定的。

【福州大学 1998 一、3 (2分)】A. 堆排序,冒泡排序B. 快速排序,堆排序C. 直接选择排序,归并排序D. 归并排序,冒泡排序4.稳定的排序方法是()【北方交通大学 2000 二、3(2分)】A.直接插入排序和快速排序 B.折半插入排序和起泡排序C.简单选择排序和四路归并排序 D.树形选择排序和shell排序5.下列排序方法中,哪一个是稳定的排序方法?()【北方交通大学 2001 一、8(2分)】A.直接选择排序 B.二分法插入排序 C.希尔排序 D.快速排序6.若要求尽可能快地对序列进行稳定的排序,则应选(A.快速排序 B.归并排序 C.冒泡排序)。

【北京邮电大学 2001 一、5(2分)】7.如果待排序序列中两个数据元素具有相同的值,在排序前后它们的相互位置发生颠倒,则称该排序算法是不稳定的。

()就是不稳定的排序方法。

【清华大学 1998 一、3 (2分)】A.起泡排序 B.归并排序 C.Shell排序 D.直接插入排序 E.简单选择排序8.若要求排序是稳定的,且关键字为实数,则在下列排序方法中应选()排序为宜。

A.直接插入 B.直接选择 C.堆 D.快速 E.基数【中科院计算所 2000 一、5(2分)】9.若需在O(nlog2n)的时间内完成对数组的排序,且要求排序是稳定的,则可选择的排序方法是()。

A. 快速排序B. 堆排序C. 归并排序D. 直接插入排序【中国科技大学 1998 二、4(2分)】【中科院计算所 1998 二、4(2分)】10.下面的排序算法中,不稳定的是()【北京工业大学 1999 一、2 (2分)】A.起泡排序B.折半插入排序C.简单选择排序D.希尔排序E.基数排序F.堆排序。

数据结构答案第10章排序学习与指导

数据结构答案第10章排序学习与指导

第10章排序10.1 知识点分析1. 排序根本概念:〔1〕排序将数据元素的任意序列, 重新排列成一个按关键字有序〔递增或递减〕的序列的过程称为排序。

〔2〕排序方法的稳定和不稳定假设对任意的数据元素序列, 使用某个排序方法, 对它按关键字进展排序, 假设对原先具有一样键值元素间的位置关系, 排序前与排序后保持一致, 称此排序方法是稳定的;反之, 那么称为不稳定的。

〔3〕内排序整个排序过程都在内存进展的排序称为内排序, 本书仅讨论内排序。

〔4〕外排序待排序的数据元素量大, 以致内存一次不能包容全部记录, 在排序过程中需要对外存进展访问的排序称为外排序。

2. 直接插入排序直接插入排序法是将一个记录插到已排序好的有序表中, 从而得到一个新的, 记录数增1的有序表。

3. 二分插入排序二分插入排序法是用二分查找法在有序表中找到正确的插入位置, 然后挪动记录, 空出插入位置, 再进展插入的排序方法。

4. 希尔排序希尔排序的根本思想是: 先选取一个小于n的整数d1作为第一个增量, 把待排序的数据分成d1个组, 所有间隔为d1的倍数的记录放在同一个组内, 在各组内进展直接插入排序, 每一趟排序会使数据更接近于有序。

然后, 取第二个增量d2, d2< d1, 重复进展上述分组和排序, 直至所取的增量di=1〔其中di< di-1 < ……< d2< d1〕, 即所有记录在同一组进展直接插入排序后为止。

5. 冒泡排序冒泡法是指每相邻两个记录关键字比大小, 大的记录往下沉〔也可以小的往上浮〕。

每一遍把最后一个下沉的位置记下, 下一遍只需检查比拟到此为止;到所有记录都不发生下沉时, 整个过程完毕。

6. 快速排序快速排序法是通过一趟排序, 将待排序的记录组分割成独立的两局部, 其中前一局部记录的关键字均比枢轴记录的关键字小;后一局部记录的关键字均比枢轴记录的关键字大, 枢轴记录得到了它在整个序列中的最终位置并被存放好。

数据结构第10章习题

数据结构第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. 冒泡

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

数据结构第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,不符合大根堆特点。

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

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

第九章 查找一、填空题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 nn 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<m )个不同的关键码插入到散列表中,解决冲突的方法是用线性探测法。

如果这n 个关键码的散列地址都相同,则探测的总次数是 n(n-1)/2=( 1+2+…+n-1) 。

(而任一元素查找次数 ≤n-1)8、设一哈希表表长M 为100 ,用除留余数法构造哈希函数,即H (K )=K MOD P (P<=M ), 为使函数具有较好性能,P 应选( 97 )9、在各种查找方法中,平均查找长度与结点个数无关的是哈希查找法 10、对线性表进行二分查找时,要求线性表必须以 顺序 方式存储,且结点按关键字有序排列。

第十章试题(有答案)

第十章试题(有答案)

一、填充题1、按排序操作中所涉及的存储器的不同,可以把排序分成和两大类。

内部排序外部排序2、主关键字是可以地标识一个数据元素的关键字。

唯一3、希尔排序是属于插入排序的一种类型,它又被称为排序。

缩小增量4、次关键字是用以标识数据元素的关键字。

多个5、按关键字与排序结果的关系,可以把排序方法分成和两类。

稳定排序非稳定排序6、在直接插入排序、希尔排序、直接选择排序、堆排序、快速排序和基数排序中,需要内存量最大的是。

基数排序7、在堆排序和快速排序中,如果数据元素的原始序列接近正序或反序,则选用最好,如果数据元素的原始序列无序,则最好选用。

堆排序快速排序8、对于由n个数据元素构成的序列实施冒泡排序时,最少的比较次数是。

冒泡排序的结束条件是。

n-1 刚做完的一趟排序没有交换元素9、对于由n个数据元素构成的序列实施冒泡排序时,数据元素的最少交换次数是,此情况说明该数据元素序列是。

0 已按排序要求有序的二、单选题(每题2分,共24分)1、如果采用直接选择排序法来排序一个长度为5,且已按相反顺序排序的数组,共需的比较次数是。

A、1B、15C、8D、10D2、有一组随机数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 排序B3、在所有学过的排序方法中,关键字比较次数与记录的初始排列次序无关的是。

A、冒泡排序B、直接选择排序C、直接插入排序D、Shell排序B4、设有1000个无序的数据元素,希望用最快的速度挑选出其中前10个最大的元素,最好选用的排序方法是。

数据结构Ch10习题答案

数据结构Ch10习题答案

第十章内部排序一、择题1.用直接插入排序法对下面四个表进行(由小到大)排序,比较次数最少的是(B)。

A.(94,32,40,90,80,46,21,69)插32,比2次插40,比2次插90,比2次插80,比3次插46,比4次插21,比7次插69,比4次B.(21,32,46,40,80,69,90,94)插32,比1次插46,比1次插40,比2次插80,比1次插69,比2次插90,比1次插94,比1次C.(32,40,21,46,69,94,90,80)插40,比1次插21,比3次插46,比1次插69,比1次插94,比1次插90,比2次插80,比3次D.(90,69,80,46,21,32,94,40)插69,比2次插80,比2次插46,比4次插21,比5次插32,比5次插94,比1次插40,比6次2.下列排序方法中,哪一个是稳定的排序方法(BD)。

A.希尔排序B.直接选择排序C.堆排序D.冒泡排序下列3题基于如下代码:for(i=2;i<=n;i++){ x=A[i];j=i-1;while(j>0&&A[j]>x){ A[j+1]=A[j];j--;}A[j+1]=x}3.这一段代码所描述的排序方法称作(A)。

A.插入排序B.冒泡排序C.选择排序D.快速排序4.这一段代码所描述的排序方法的平均执行时间为(D)A.O(log2n) B.O(n) C.O(nlog2n) D.O(n2)5.假设这段代码开始执行时,数组A中的元素已经按值的递增次序排好了序,则这段代码的执行时间为(B)。

A.O(log2n) B.O(n) C.O(nlog2n) D.O(n2)6.在快速排序过程中,每次被划分的表(或了表)分成左、右两个子表,考虑这两个子表,下列结论一定正确是(B)。

A.左、右两个子表都已各自排好序B.左边子表中的元素都不大于右边子表中的元素C.左边子表的长度小于右边子表的长度D.左、右两个子表中元素的平均值相等7.对n个记录进行堆排序,最坏情况下的执行时间为(C)。

数据结构课后习题第十章

数据结构课后习题第十章

1.在下列排序算法中,稳定的事(),平均速度最快的是(),所需辅助存储空间最多的是()。

A.希尔排序B.快速排序C.堆排序D.归并排序2.若要在O(n)数量级的时间内完成对数组的排序,且要求排序是稳定的,则可选择的排序方式应该是()。

A.快速排序B.堆排序C.归并排序D.希尔排序3.在下列排序算法中,()算法的时间复杂度与初始排序无关。

A.直接插入排序B.起泡排序C.快速排序D.直接选择排序4.一组记录关键字序列是(46,79,56,38,40,84),则用堆排序方法建立的初始大根堆是()。

A.79,46,56,38,40,84B.84,79,56,38,40,46C.84,79,56,46,40,38D.94,56,79,40,46,385.一组记录的关键字序列是(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,796.一组记录的关键字序列是(25,48,16,35,79,82,26,40,36,72),用二路归并排序方法进行排序,则第二趟归并的结果是()。

A.16,25,35,48,23,40,79,82,36,72B.16,25,35,48,79,82,23,36,40,72C.16,25,35,46,23,36,40,79,82,72D.16,25,35,48,79,23,36,40,72,827.在以下排序方法中,关键字比较的次数与记录的初始排列次序有关的是()A.归并排序B.堆排序C.插入排序D.选择排序8.下列排序算法中,()算法可能会出现下面情况:初始数据有序时,花费的时间反而最多。

A.堆排序B.冒泡排序C.希尔排序D.快速排序9.数据序列(8,9,10,4,5,6,20,1,2)只能是下列排序算法中的()的两趟排序后的结果。

内部排序习题

内部排序习题

第10章内部排序【例10-1】已知关键字序列(12,77,21,65,38,7,38,53),给出采用直接插入排序方法按关键字递增序排列时的每一趟结果。

解:初始1趟2趟3趟4趟5趟6趟7趟(表示有序区)【例10-2】待排序列为(39,80,76,41,13,29,50,78,30,11,100,7,41,86),步长因子分别取5、3、1,给出采用希尔排序方法按关键字递增序排列时的每一趟结果。

解:排序过程如下:p=539 80 76 41 13 29 50 78 30 11 100 7 41 86子序列分别为{39,29,100},{80,50,7},{76,78,41},{41,30,86},{13,11}。

第一趟排序结果:p=3 29 7 41 30 11 39 50 76 41 13 100 80 78 86子序列分别为{29,30,50,13,78},{7,11,76,100,86},{41,39,41,80}。

第二趟排序结果:p=1 13 7 39 29 11 41 30 76 41 50 86 80 78 100此时,序列基本“有序”,对其进行直接插入排序,得到最终结果:7 11 13 29 30 39 41 41 50 76 78 80 86 100【例10-3】已知序列(17,18,60,40,7,32,73,65,85),请给出采用冒泡排序法对该序列作升序排序时的每一趟的结果。

解:初始1趟2趟3趟4趟5趟17 17 17 17 7 718 18 18 7 17 1760 40 7 18 18 1840 7 32 32 32 327 32 40 40 40 4032 60 60 60 60 6073 65 65 65 65 6565 73 73 73 73 7385 85 85 85 85 85(表示有序区)【例10-4】已知关键字序列(38,12,21,77,65,7,38,53)给出采用快速排序方法按关键字增序排序时的第一趟快排过程,并举出一个反例说明快速排序是不稳定排序。

数据结构第10章作业

数据结构第10章作业

第10章排序作业作业一:1)对人意的7个关键字进行排序,至少要进行_______次关键字之间的两两比较。

A. 13B.11C.15D.16E.19【参考答案】C【解题思路】任何一个借助“比较”进行排序的算法,在最坏的情况下所需进行得比较次数至少为[)!(log2n]。

[)!7(log2]=15。

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

A.希尔排序B.冒泡排序C.插入排序D.选择排序【参考答案】C【解题思路】插入排序的思想是:每一趟将一个待排序的记录,按其关键字的大小插入到已经排序的序列中的适当位置。

直到全部的记录插入完成为止。

3)对记录的关键字为{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.归并排序【参考答案】B【解题思路】由排序的结果直接可以确知(即使不知道其他几中排序方法)该排序是增量序列为5,3,1的希尔排序。

4)已知序列{70,83,100,65,10,32,7,9},请给出采用插入排序法对该序列作升序排序时的每一趟的结果。

【参考答案】采用插入排序方法排序的各趟的结果如下:初始:(70),83,100,65,10,32,7,9第一趟:(70,83), 100,65,10,32,7,9第二趟:(70,83,100),65,10,32,7,9第三趟:(65,70,83,100),10,32,7,9第四趟:(10,65,70,83,100),32,7,9第五趟:(10,32,65,70,83,100),7,9第六趟:(7,10,32,65,70, 83,100),9第七趟:(7,9,10,32,65,70,83,100)作业二:1)快速排序方法在_____情况下最不利于发挥其长处。

第10章排序自测题答案

第10章排序自测题答案

第10章排序自测卷一、填空题(每空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个不同的数据进行排序,至多需要比较次。

数据结构答案 第10章 排序学习与指导

数据结构答案 第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.快速排序快速排序法是通过一趟排序,将待排序的记录组分割成独立的两部分,其中前一部分记录的关键字均比枢轴记录的关键字小;后一部分记录的关键字均比枢轴记录的关键字大,枢轴记录得到了它在整个序列中的最终位置并被存放好。

第二趟再分别对分割成两部分子序列,再进行快速排序,这两部分子序列中的枢轴记录也得到了最终在序列中的位置而被存放好,并且它们又分别分割出独立的两个子序列……。

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

第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.从未排序序列中挑选元素,并将其依次插入已排序序列(初始时为空)的一端的方法,称为
A. 希尔排序B. 归并排序C. 插入排序D. 选择排序
(B)4.对n个不同的排序码进行冒泡排序,在下列哪种情况下比较的次数最多。

A. 从小到大排列好的B. 从大到小排列好的C. 元素无序D. 元素基本有序
(D)5.对n个不同的排序码进行冒泡排序,在元素无序的情况下比较的次数为
A. n+1 B. n C. n-1 D. n(n-1)/2
(C)6.快速排序在下列哪种情况下最易发挥其长处。

A. 被排序的数据中含有多个相同排序码B. 被排序的数据已基本有序
C. 被排序的数据完全无序D. 被排序的数据中的最大值和最小值相差悬殊
(B)7.对有n个记录的表作快速排序,在最坏情况下,算法的时间复杂度是
A.O(n) B.O(n2) C.O(nlog2n) D.O(n3)
(C)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
( D )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
(B)10.堆是一种排序。

A. 插入B.选择C. 交换D. 归并
(C)11.堆的形状是一棵
A. 二叉排序树B.满二叉树C. 完全二叉树D. 平衡二叉树
(B)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
(C)17.下述几种排序方法中,要求内存最大的是
A. 插入排序B.快速排序C. 归并排序D. 选择排序。

相关文档
最新文档