数据结构排序习题

合集下载

《数据结构与算法》期末练习题1

《数据结构与算法》期末练习题1

一、选择:(每题2分,共30分) 简单选择排序 冒泡排序 归并排序 稳定1、下列排序算法中,其中( )是稳定的。

堆排序 希尔排序 快速排序 基数排序 不稳定A) 堆排序,冒泡排序 B) 快速排序,堆排序 C) 直接选择排序,希尔排序 D) 归并排序,冒泡排序 2、下列排序方法中,哪一个是稳定的排序方法?( )A)堆排序 B)二分法插入排序 C)希尔排序 D)快速排序3、一个栈的输入序列为1 2 3 4 5,则下列序列中不可能是栈的输出序列的是( )。

A) 2 3 4 1 5 B) 5 4 1 3 2 C) 2 3 1 4 5 D) 1 5 4 3 2 4、非空循环链表head 的尾结点 *p 满足下列( )条件A)head->next==p; B)head==p; C)p->next==head; D)p->next==0 5、下列编码中属前缀码的是( )A){1,01,000,001} B){1,01,011,010} C){0,10,110,11} D){0,1,00,11} 6、对于哈希函数H(key)=key % 7,被称为同义词的关键字是( )A)36和50 B)23和39 C)15和44 D)25和517、将一个长度为n 的向量的第i 个元素删除时,需要前移( )个元素。

A) i B) n-i C) n+1 D) n-i+18、有一个有序表为{ 1,3,9,12,32,41,45,62,77,88,92,100},用折半查找法,若要找62,要经过( )次比较。

A. 3 B. 6 C. 4 D. 5 9、高度为 K 的二叉树最大的结点数为( )。

A)2k B)2k-1 C)2k -1 D)2k-1-110、对表长为n 的顺序表进行顺序查找,在查找概率相等的情况下,查找成功的平均查找长度为( )A) (n-1)/2 B) n/2 C) (n+1)/2 D) n11、如果求一个连通图中以某个顶点为根的高度最小的生成树,应采用( )A)深度优先搜索算法 B)广度优先搜索算法 C)求最小生成树的prim 算法 D)拓扑排序算法12、已知有向图的正邻接链表的存储结构如下,从顶点1出发的按深度优先遍历序列是( )。

大连东软数据结构题库全6

大连东软数据结构题库全6

2③ 一组记录的关键码为{46,79,56,38,40,84},则利用快速排序的方法,以第一 个记录为基准得到的一次划分结果为( C ) 。 A.{38,40,46,56,79,84} C.{40,38,46,56,79,84} B. {40,38,46,79,56,84} D. {40,38,46,84,56,79}
6.10.3 知识点ቤተ መጻሕፍቲ ባይዱ冒泡排序
一、选择题 1③ 若用冒泡排序方法对序列{10, 14, 26, 29, 41, 52}从大到小排序, 需进行 ( C 次比较。 A. 3 B. 10 C. 15 D. 25 ) )
2 对n个不同的排序码进行冒泡排序,在下列哪种情况下比较的次数最多。 ( B A. 从小到大排列好的 B. 元素逆序 C. 元素无序 D. 元素基本有序
6.10 习题
6.10.1 知识点:直接插入排序
一、选择题 1② 用直接插入排序方法对下面四个序列进行排序(由小到大) ,元素比较次数最少的 是( C ) 。 A. 94,32,40,90,80,46,21,69 C. 21,32,46,40,80,69,90,94 B. 32,40,21,46,69,94,90,80 D. 90,69,80,46,21,32,94,40
6.10.4 知识点:快速排序
一、选择题 1③ 有一组数据{15,9,7,8,20,-1,7,4}, 用快速排序的划分方法进行一趟划分 后数据的排序为 ( A ) (按递增序) 。 A.下面的 B,C,D 都不对。 C.{20,15,8,9,7,-1,4,7} B.{9,7,8,4,-1,7,15,20} D. {9,4,7,8,7,-1,15,20}
F ) 2② 在初始数据表已经有序时, 快速排序算法的时间复杂度为 O ( n log 2 n ) 。 ) 3② 在待排数据基本有序的情况下, 快速排序效果最好。 【南京理工大学 1997】

南邮_数据结构课后习题答案讲解

南邮_数据结构课后习题答案讲解

?
?
?1 4 7 ?
?
?
?4 4 9 ?
?4 4 9 ?
4.7 求对题图4-1的稀疏矩阵执行矩阵转置时数组
num[]和k[]的值。
col
0
1
2
3
4
num[col] 1
0
2
1
2
k[col]
0
1
1
3
4
2020/2/8
14
第六章 习题讲解
6-2. 对于三个结点 A,B和C,可分别组成多少不同 的无序树、有序树和二叉树?
int i,j,sum=0;
for (i=0;temp[i]<x&&i<n;i++); //找到首个大于等于 x的元素位置 i
if(i>n-1) return; //没有符合条件的元素
ffoorr ((jj==ii;;ljs<tn[j;]<) =y&&j<n;j++); if (lst[j]>y//)找到首个//大大于于yy的的元元素素前位移置 j
?0 0 ???3 0
6 0
0 0
0? 7??
行三元组:???10
2 0
6 ?列三元组:?1
? 3??
??0
0 2
?3?
6
? ?
? 0 0 0 0 0?
?1 4 7 ?
?3 2 ?8?
? ?
0
0 ? 8 10 0??
??3 2 ?8??
??3
3
10
? ?
?? 0 0 0 0 9??
?3 3 10 ?
(2)void Search_Delete(List *lst, T x,T y)

计算机专业基础综合数据结构(排序)历年真题试卷汇编3

计算机专业基础综合数据结构(排序)历年真题试卷汇编3

计算机专业基础综合数据结构(排序)历年真题试卷汇编3(总分:72.00,做题时间:90分钟)一、单项选择题(总题数:15,分数:36.00)1.下面给出的四种排序法中,( )排序法是不稳定性排序法。

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

【福州大学1998一、3(2分)】A.堆排序,冒泡排序B.快速排序,堆排序C.直接选择排序,归并排序D.归并排序,冒泡排序√3.稳定的排序方法是( )。

【北方交通大学2000二、3(2分)】A.直接插入排序和快速排序B.折半插入排序和起泡排序√C.简单选择排序和四路归并排序D.树形选择排序和Shell排序4.下列排序方法中,哪一个是稳定的排序方法?( )。

【北方交通大学2001一、8(2分)】A.直接选择排序B.二分法插入排序√C.希尔排序D.快速排序5.下列排序算法中,( )是稳定排序。

【北京理工大学2007一、10(1分)】A.希尔排序B.快速排序C.堆排序D.直接插入排序√6.如果待排序序列中两个数据元素具有相同的值,在排序前后它们的相互位置发生颠倒,则称该排序算法是不稳定的。

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

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

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

【中国科技大学1998二、4(2分)】【中科院计算所1998二、4(2分)】A.快速排序B.堆排序C.归并排序√D.直接插入排序9.下面的排序算法中,不稳定的是( )。

【北京工业大学1999一、2(2分)】A.起泡排序B.折半插入排序C.简单选择排序√D.希尔排序√E.基数排序下列内部排序算法中:【北京工业大学2000一、1(10分每问2分)】A.快速排序B.直接插入排序C.二路归并排序D.简单选择排序E.起泡排序(分数:8.00)(1).其比较次数与序列初态无关的算法是( )A.B.C. √D. √E.(2).不稳定的排序算法是( )A. √B.C.D. √E.(3).在初始序列已基本有序(除去n个元素中的某k个元素后即呈有序,k<A.B. √C.D.E.(4).排序的平均时间复杂度为O(n*10gn)的算法是( ),为O(n*n)的算法是( )A. √B. √C. √D. √E. √10.排序趟数与序列的原始状态有关的排序方法是( )排序法。

计算机专业基础综合数据结构(排序)历年真题试卷汇编1

计算机专业基础综合数据结构(排序)历年真题试卷汇编1

计算机专业基础综合数据结构(排序)历年真题试卷汇编1(总分:72.00,做题时间:90分钟)一、单项选择题(总题数:15,分数:30.00)1.下列序列中,( )是执行第一趟快速排序后所得的序列。

【福州大学1998一、9(2分)】A.[68,11,18,69] [23,93,73]B.[68,11,69,23] [18,93,73]C.[93,73][68,11,69,23,18] √D.[68,11,69,23,18] [93,73]枢轴是73。

2.适合并行处理的排序算法是( )。

【西安电子科技大学2005一、8(1分)】【电子科技大学2005一、8(1分)】A.选择排序B.快速排序√C.希尔排序D.基数排序3.一组记录的关键字为(46,79,56,38,40,84),则利用快速排序的方法,以第一个记录为基准得到的一次划分结果为( )。

【北京交通大学2005一、8(2分)【燕山大学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)如何对一趟快速排序的结果在最短的时间内做出正确判断,这里给出建议:首先84应该不动,所以D排除了;接着40应调到序列首,所以A排除了;接着79应调到移走40的空位上,B排除了。

选择答案C,不必再继续做了(假定确有唯一正确答案)。

4.下列排序算法中,( )算法可能会出现下面的情况:初始数据有序时,花费的时间反而最多。

【中南大学2005一、4(2分)】A.快速排序√B.堆排序C.希尔排序D.冒泡排序5.将一组无序的数据重新排列成有序序列,其方法有:( )。

【武汉理工大学2004一、8(3分)】A.拓扑排序B.快速排序√C.堆排序√D.基数排序√6.就平均性能而言,目前最好的内排序方法是( )排序法。

【西安电子科技大学1998一、9(2分)】A.冒泡B.希尔插,AC.交换D.快速√7.如果只想得到1000个元素组成的序列中第5个最小元素之前的部分排序的序列,用( )方法最快。

计算机学科专业基础综合数据结构-内部排序_真题-无答案

计算机学科专业基础综合数据结构-内部排序_真题-无答案

计算机学科专业基础综合数据结构-内部排序(总分80,考试时间90分钟)一、单项选择题1. 对序列{15,9,7,8,20,-1,4}进行排序,进行一趟后数据的排列变为{4,9,-1,8,20,7,15);则采用的是____排序。

A. 选择B. 快速C. 希尔D. 冒泡2. 下列4个序列中,哪一个是堆____。

A. 75,65,30,15,25,45,20,10B. 75,65,45,10,30,25,20,15C. 75,45,65,30,15,25,20,10D. 75,45,65,10,25,30,20,153. 一组记录的关键码为(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)4. 数据序列(8,9,10,4,5,6,20,1,2)只能是下列排序算法中____的两趟排序后的结果。

A. 选择排序B. 冒泡排序C. 插入排序D. 堆排序5. 对一组数据(84,47,25,15,21)排序,数据的排列次序在排序的过程中的变化为____。

(1)84 47 25 15 21 (2)1 5 47 25 84 21(3)15 21 25 84 47 (4)1 5 21 25 47 84则采用的排序是____。

A. 选择B. 冒泡C. 快速D. 插入6. 若用冒泡排序对关键字序列{18,16,14,12,10,8},进行从小到大的排序,所需进行的关键字比较总次数是____。

A. 10B. 15C. 21D. 347. 设一组初始记录关键字序列为(25,50,15,35,80,85,20,40,36,70),其中含有5个长度为2的有序子表,则用归并排序的方法对该记录关键字序列进行一趟归并后的结果为____。

数据结构(第九章 排序)

数据结构(第九章 排序)

9.1 插入排序
直接插入排序
直接插入排序算法实现
public class Array9 { //见例1.4 Array1 // public static int[] randomInt(int n, int size) //产生n个随机数,返回整型数组 // public static void print(int[] value) //输出数组元素
9.1 插入排序
直接插入排序
直接插入排序算法分析
最好情况,已排序{1,2,3,4,5,6},O(n)。 最坏情况,反序排列{6,5,4,3,2,1}, O(n 随机排列, O(n 2 ) 。
2
)

直接插入排序的平均比较次数为 :
i 1 1 2 3 n2 C n n 1 2 4 4 4 i 1
n
平均移动次数为
i n(n 1) n 2 M 4 4 i 1 2
n
9.1 插入排序
直接插入排序
直接插入排序算法分析

直接插入排序算法是稳定的:


设有ai和aj (i<j), ai位于aj之前,它们的关键 字相等ki =kj ;排序后,如果ai仍在aj之前,则称 排序算法稳定,否则不稳定。 for (j=i-1; j>=0 && temp<keys[j]; j--)

插入排序的分类:


9.1 插入排序
直接插入排序
直接插入排序举例
例如,n=6,数组R的六个排序码分别为:17,3,25,14,20,9。 它的直接插入排序的执行过程如图所示:
R[0] 初始状态 (17 ) R[1] 3 R[2] 25 R[3] 14 R[4] 20 R[5] 9

吉林省专升本数据结构习题及答案——第八章

吉林省专升本数据结构习题及答案——第八章

吉林省专升本考试数据结构分章习题及参考答案———选择题(第八章)1、若数据元素序列{11,12,13,78,9,23,4,5}是采用下列排序方法之一得到的第二趟排序后的结果,则该排序算法只能是( )A、冒泡排序B、插入排序C、选择排序D、归并排序2、若将两个各有n个元素的有序表归并成一个有序表,则最少比较次数是()。

A、 nB、 2*n-1C、 2nD、 n-13、已知数据表中每个元素距其最终位置不远,则采用()方法最节省时间A、堆排序B、插入排序C、快速排序D、直接选择排序4、下列排序算法中,()算法可能会出现下面情况:在后一趟开始之前,所有元素都不在其终的位置上。

A、堆排序B、冒泡排序C、快速排序D、插入排序5、下述几种排序方法中,要求内存量最大的是()。

A、插入排序B、快速排序C、归并排序D、选择排序6、就排序算法所用的辅助空间而言,堆排序,快速排序,归并排序的关系是()A、堆排序<快速排序<归并排序B、堆排序<归并排序<快速排序C、堆排序>归并排序>快速排序D、堆排序>快速排序>归并排序7、快速排序方法在( )情况下最不利于发挥其长处。

A、要排序的数据量太大B、要排序的数据中含有多个相同值C、要排序的数据已基本有序D、要排序的数据个数为奇数8、对关键字由大到小进行冒泡排序,在下列()情况下比较的次数最多。

A、从小到大排序B、从大到小排序C、元素无序D、元素基本有序9、对5个不同的数据元素进行直接插入排序,最多需要进行()次比较。

A、 8B、 10C、 15D、 2510、如果只想得到1000个元素组成的序列中第5个小元素之前的部分排序的序列,用()方法快。

A、起泡排序B、快速排列C、堆排序D、简单选择排序11、设有1000个无序的元素,希望用最快的速度挑选出其中前十个最大的元素,在以下的排序方法中采用哪一种最好?()A、快速排序B、归并排序C、堆排序D、基数排序12、下列排序算法中,()可能会出现下面情况:在最后一趟开始之前,所有元素都不在最终位置上。

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

07排序【单选题】1. 从未排序序列中依次取出一个元素与已排序序列中的元素依次进行比较,然后将其放在已排序序列的合适位置,该排序方法称为(A)排序法。

A、直接插入B、简单选择C、希尔D、二路归并2. 直接插入排序在最好情况下的时间复杂度为(B)。

A、O(logn)B、O(n)C、O(n*logn)D、O(n2)3. 设有一组关键字值(46,79,56,38,40,84),则用堆排序的方法建立的初始堆为(B)。

A、79,46,56,38,40,80B、84,79,56,38,40,46C、84,79,56,46,40,38D、84,56,79,40,46,384. 设有一组关键字值(46,79,56,38,40,84),则用快速排序的方法,以第一个记录为基准得到的一次划分结果为(C)。

A、38,40,46,56,79,84B、40,38,46,79,56,84C、40,38,46,56,79,84D、40,38,46,84,56,795. 将两个各有n个元素的有序表归并成一个有序表,最少进行(A)次比较。

A、nB、2n-1C、2nD、n-16. 下列排序方法中,排序趟数与待排序列的初始状态有关的是(C)。

A、直接插入B、简单选择C、起泡D、堆7. 下列排序方法中,不稳定的是(D)。

A、直接插入B、起泡C、二路归并D、堆8. 若要在O(nlog2n)的时间复杂度上完成排序,且要求排序是稳定的,则可选择下列排序方法中的(C)。

A、快速B、堆C、二路归并D、直接插入9. 设有1000个无序的数据元素,希望用最快的速度挑选出关键字最大的前10个元素,最好选用(C)排序法。

A、起泡B、快速C、堆D、基数10. 若待排元素已按关键字值基本有序,则下列排序方法中效率最高的是(A)。

A、直接插入B、简单选择C、快速D、二路归并11. 数据序列(8,9,10,4,5,6,20,1,2)只能是下列排序算法中的(C)的两趟排序后的结果。

A、选择排序B、冒泡排序C、插入排序D、堆排序12. (A)占用的额外空间的空间复杂性为O(1)。

A、堆排序算法B、归并排序算法C、快速排序算法D、以上答案都不对13. 对一组数据(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、插入14. 一个排序算法的时间复杂度与(B)有关。

A、排序算法的稳定性B、所需比较关键字的次数C、所采用的存储结构D、所需辅助存储空间的大小15. 适合并行处理的排序算法是(B)。

A、选择排序B、快速排序C、希尔排序D、基数排序16. 下列排序算法中,(A)算法可能会出现下面的情况:初始数据有序时,花费的时间反而最多。

A、快速排序B、堆排序C、希尔排序D、起泡排序17. 有些排序算法在每趟排序过程中,都会有一个元素被放置在其最终的位置上,下列算法不会出现此情况的是(A)。

A、希尔排序B、堆排序C、起泡排序D、快速排序18. 在文件“局部有序”或文件长度较小的情况下,最佳内部排序的方法是(A)。

A、直接插入排序B、起泡排序C、简单选择排序D、快速排序19. 下列排序算法中,(D)算法可能会出现下面情况:在最后一趟开始之前,所有元素都不在其最终的位置上。

A、堆排序B、冒泡排序C、快速排序D、插入排序20. 下列排序算法中,占用辅助空间最多的是(A)。

A、归并排序B、快速排序C、希尔排序D、堆排序21. 从未排序序列中依次取出一个元素与已排序序列中的元素依次进行比较,然后将其放在已排序序列的合适位置,该排序方法称为(A)排序法。

A、插入B、选择C、希尔D、二路归并22. 用直接插入排序方法对下面四个序列进行排序(由小到大),元素比较次数最少的是(C)。

A、94,32,40,90,80,46,21,69B、32,40,21,46,69,94,90,80C、21,32,46,40,80,69,90,94D、90,69,80,46,21,32,94,4023. 对序列{15,9,7,8,20,-1,4}用希尔排序方法排序,经一趟后序列变为{15,-l,4,8,20,9,7}则该次采用的增量是(B)。

A、lB、4C、3D、224. 在含有n个关键字的小根堆(堆顶元素最小)中,关键字最大的记录有可能存储在(D)位置上。

A、⎣n/2⎦B、⎣n/2⎦ -1C、1D、⎣n/2⎦ +225. 对n个记录的线性表进行快速排序为减少算法的递归深度,以下叙述正确的是(A)。

A、每次分区后,先处理较短的部分B、每次分区后,先处理较长的部分C、与算法每次分区后的处理顺序无关D、以上三者都不对26. 从堆中删除一个元素的时间复杂度为(B)。

A、O(1)B、O(log2n)C、O(n)D、O(nlog2n)【计算题】1. 设有关键字序列(503,087,512,061,908,170,897,275,653,426),试用下列各内部排序方法对其进行排序,要求写出每趟排序结束时关键字序列的状态。

(1)直接插入法;解:初始:[503],087,512,061,908,170,897,275,653,426第一趟:[087,503],512,061,908,170,897,275,653,426第二趟:[087,503,512],061,908,170,897,275,653,426第三趟:[061,087,503,512],908,170,897,275,653,426第四趟:[061,087,503,512,908],170,897,275,653,426第五趟:[061,087,170,503,512,908],897,275,653,426第六趟:[061,087,170,503,512,897,908],275,653,426第七趟:[061,087,170,275,503,512,897,908],653,426(2)希尔排序法,增量序列为(5,3,1);解:初始:503,087,512,061,908,170,897,275,653,426第一趟:170,087,275,061,426,503,897,512,653,908第二趟:061,087,275,170,426,503,897,512,653,908第三趟:061,087,170,275,426,503,512,653,897,908(3)快速排序法;解:初始:[503,087,512,061,908,170,897,275,653,426]第一趟:[426,087,275,061,170],503,[897,908,653,512]第二趟:[170,087,275,061],426[],503,[512,653],897,[908]第三趟:[061,087],170,[275],426,503,512,[653],897,908第四趟:061,087,170,275,426,503,512,653,897,908(4)堆排序法;解:初始:503,087,512,061,908,170,897,275,653,426第一趟:908,653,897,503,426,170,512,275,061,087第二趟:897,653,512,503,426,170,087,275,061,908第三趟:653,503,512,275,426,170,087,061,897,908第四趟:512,503,170,275,426,061,087,653,897,908第五趟:503,426,170,275,087,061,512,653,897,908第六趟:426,275,170,061,087,503,512,653,897,908第七趟:275,087,170,061,426,503,512,653,897,908第八趟:170,087,061,275,426,503,512,653,897,908第九趟:087,061,170,275,426,503,512,653,897,908第十趟:061,087,170,275,426,503,512,653,897,908(5)二路归并排序法;解:初始:[503],[087],[512],[061],[908],[170],[897],[275],[653],[426]第一趟:[087,503],[061,512],[170,908],[275,897],[426,653]第二趟:[061,087,503,512],[170,275,897,908],[426,653]第三趟:[061,087,170,275,503,512,897,908],[426,653]第四趟:[061,087,170,275,426,503,512,653,897,908]【算法题】下列算法题中可能用到的类如下:public class SortTable {private int st[ ];public SortTable(int length){int i;st=new int[length];for(i=0;i<length;i++)st[i]=(int)(Math.random()*10000);}//构造函数}//SortTable1. 在SortTable类中添加实现如下功能的方法:(1)对数据元素按奇偶转换排序法进行排序。

方法为:第一趟对所有奇数的i,将st[i]和st[i+1]进行比较,第二趟对所有偶数的i,将st[i]和st[i+1]进行比较,每次比较时若st[i]>st[i+1],则将二者交换,以后重复上述二趟过程交换进行,直至整个数组有序。

解:public void oesort( ){boolean change=true;int temp;while (change){change=false;for(i=0;i<st.length;i+=2){if (st[i+1]<st[i]){change=true;temp=st[i+1]; st[i+1]=st[i]; st[i]=temp;}//if}//forfor(i=1;i<st.length;i+=2){if (st[i+1]<st[i]){change=true;temp=st[i+1]; st[i+1]=st[i]; st[i]=temp;}//if}//for}//while}//oesort(2)设待排数据元素的值互不相同,对它们按计数排序法进行排序,方法为:另设数组count,对每个元素st[i],统计关键字值比它小的元素个数存于count[i],再依count[i]值的大小对st中元素进行重排。

相关文档
最新文档