文档视界 最新最全的文档下载
当前位置:文档视界 › 计算机专业基础综合数据结构(排序)历年真题试卷汇编1.doc

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

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

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

(总分:72.00,做题时间:90分钟)

一、单项选择题(总题数:15,分数:30.00)

1.下列序列中,( )是执行第一趟快速排序后所得的序列。【福州大学1998一、9(2分)】(分数:

2.00)

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]

2.适合并行处理的排序算法是( )。【西安电子科技大学2005一、8(1分)】【电子科技大学2005一、8(1分)】(分数:2.00)

A.选择排序

B.快速排序

C.希尔排序

D.基数排序

3.一组记录的关键字为(46,79,56,38,40,84),则利用快速排序的方法,以第一个记录为基准得到的一次划分结果为( )。【北京交通大学2005一、8(2分)【燕山大学2001一、4(2分)】(分数:2.00)

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.下列排序算法中,( )算法可能会出现下面的情况:初始数据有序时,花费的时间反而最多。【中南大学2005一、4(2分)】(分数:2.00)

A.快速排序

B.堆排序

C.希尔排序

D.冒泡排序

5.将一组无序的数据重新排列成有序序列,其方法有:( )。【武汉理工大学2004一、8(3分)】(分数:

2.00)

A.拓扑排序

B.快速排序

C.堆排序

D.基数排序

6.就平均性能而言,目前最好的内排序方法是( )排序法。【西安电子科技大学1998一、9(2分)】(分数:

2.00)

A.冒泡

B.希尔插,A

C.交换

D.快速

7.如果只想得到1000个元素组成的序列中第5个最小元素之前的部分排序的序列,用( )方法最快。【清华大学1998一、2(2分)】(分数:2.00)

A.起泡排序

B.快速排列

C.Shell排序

D.堆排序

E.简单选择排序

8.若要从1000个元素中选出前10个最小的元素,( )是最适合的算法。【北京理工大学2005一、9(1分)】(分数:2.00)

A.直接插入排序

B.归并排序

C.堆排序

D.快速排序

9.对数据序列(8,9,10,4,5,6,20,1,2)采用(由后向前次序的)冒泡排序,需要进行的趟数(遍数)

至少是( )。【中国科学技术大学2005】(分数:2.00)

A.3

B.4

C.5

D.8

10.下列排序算法中,占用辅助空间最多的是:( )。【厦门大学2002五、2(8分)】(分数:2.00)

A.归并排序

B.快速排序

C.希尔排序

D.堆排序

11.在下面的排序方法中,辅助空间为O(m)的是( )。【南京理工大学1999一、17(1分)】(分数:2.00)

A.希尔排序

B.堆排序

C.选择排序

D.归并排序

12.从未排序序列中依次取出一个元素与已排序序列中的元素依次进行比较,然后将其放在已排序序列的合适位置,该排序方法称为( )排序法。【北京航空航天大1999一、8(2分)】(分数:2.00)

A.插入

B.选择

C.希尔

D.二路归并

13.在下列排序方法中,( )方法可能出现这种情况:在最后一趟开始之前,所有的元素都不在其最终应在的正确位置上。【武汉理工大学2003一、10(26/12分)】(分数:2.00)

A.快速排序

B.冒泡排序

C.堆排序

D.插入排序

14.用直接插入排序方法对下面四个序列进行排序(由小到大),元素比较次数最少的是( )。【北方交通大学2001一、15(2分)】(分数:2.00)

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

15.直接插入排序在最好情况下的时间复杂度为( )。【北京邮电大学1999一、5(2分)】(分数:2.00)

A.O(logn)

B.O(n)

C.O(n*logn)

D.O(n 2 )

二、填空题(总题数:6,分数:12.00)

16.堆是一种有用的数据结构。试判断下面的关键字序列中哪一个是堆__________。①16,72,31,23,94,53 ②94,53,31,72,16,23③16,53,23,94,31,72 ④16,31,23,94,53,72⑤94,31,53,23,16,72堆排序是一种(1)类型的排序,它的一个基本问题是如何建堆,常用的建堆算法是1964年Floyd提出的(2),对含有n个元素的序列进行排序时,堆排序的时间复杂度是(3),所需要的附加结点是(4)。【山东工业大学1994一、2(5分(分数:2.00)

17.堆是一种有用的数据结构。堆排序是一种(1)排序,堆实质上是一棵(2)结点的层次序列。对含有n个元素的序列进行排序时,堆排序的时间复杂度是(3),所需的附加存储结点是(4)。关键字序列05,23,16,68,94,72,71,73是否满足堆的性质(5)。【山东工业大学1996三、1(5分)】(分数:2.00)

__________________________________________________________________________________________ 18.每次使两个有序表合并成一个有序表,这种排序方法叫做__________排序。【哈尔滨工业大学2005一、6(1分)】(分数:2.00)

__________________________________________________________________________________________ 19.按LSD进行多关键字排序,除最次位关键字之外,对每个关键字进行排序时,只能用__________的排序方法。【北京交通大学2004二、5(2分)】(分数:2.00)

__________________________________________________________________________________________ 20.分别采用堆排序、快速排序、冒泡排序和归并排序,对初态为有序的表,则最省时间的是__________

算法,最费时间的是__________算法。【福州大学1998二、10(2分)】(分数:2.00)

__________________________________________________________________________________________ 21.不受待排序初始序列的影响,时间复杂度为O(N 2 )的排序算法是__________,在排序算法的最后一趟开始之前,所有元素都可能不在其最终位置上的排序算法是__________。【中国人民大学2001一、3(2分)】(分数:2.00)

__________________________________________________________________________________________

三、判断题(总题数:7,分数:14.00)

22.归并排序要求的辅助空间最多。( )【中国海洋大学2007二、15(1分)】(分数:2.00)

A.正确

B.错误

23.在分配排序时,最高位优先分配法比最低位优先分配法简单。( )【上海交通大学1998一、20(1分)】(分数:2.00)

A.正确

B.错误

24.快速排序是排序算法中最快的一种。 ( )【暨南大学2010三、1(1分)】(分数:2.00)

A.正确

B.错误

25.在任何情况下,归并排序都比简单插入排序快。( )【北京邮电大学2000一、4(1分)2002一、9(1分)】(分数:2.00)

A.正确

B.错误

26.基数分类只适用于以数字为关键字的情况,不适用于以字符串为关键字的情况。( )【哈尔滨工业大学2003二、8(1分)】(分数:2.00)

A.正确

B.错误

27.外部排序是把外存文件调入内存,可利用内部排序的方法进行排序,因此排序所花的时间取决于内部排序的时间。( )【北京邮电大学1998一、8(2分)】(分数:2.00)

A.正确

B.错误

28.在外排序过程中,对长度为n的初始序列进行“置换一选择”排序时,可以得到的最大初始有序段的长度不超过n/2。( )【大连海事大学2001一、3(1分)】(分数:2.00)

A.正确

B.错误

四、综合题(总题数:2,分数:16.00)

在堆排序、快速排序和合并排序中:(分数:8.00)

(1).若只从存储空间考虑,则应首先选取哪种排序方法,其次选取哪种排序方法,最后选取哪种排序方法?(分数:2.00)

(2).若只从排序结果的稳定性考虑,则应选取哪种排序方法?(分数:2.00)

__________________________________________________________________________________________ (3).若只从平均情况下排序最快考虑,则应选取哪种排序方法?(分数:2.00)

__________________________________________________________________________________________ (4).若只从最坏情况下排序最快并且要节省内存考虑,则应选取哪种排序方法?【吉林大学2001一、5(6分)】(分数:2.00)

__________________________________________________________________________________________ 已知关键字集合为{32,6,50,27,97,1 5,92,29,20),要求按关键字递增排序(分数:8.00)(1).若采用快速排序,请给出第一趟、第二趟的排序结果。(分数:2.00)

__________________________________________________________________________________________ (2).若采用(小根)堆排序,请给出初始堆。(分数:2.00)

__________________________________________________________________________________________ (3).若给定待排序记录的关键字基本有序时,应采用快速排序还是堆排序?为什么?(分数:2.00)

__________________________________________________________________________________________ (4).快速排序属于稳定排序吗?堆排序属于稳定排序吗?【厦门大学2005 4(15分)】(分数:2.00)

__________________________________________________________________________________________

各种排序算法的总结和比较

各种排序算法的总结和比较 1 快速排序(QuickSort) 快速排序是一个就地排序,分而治之,大规模递归的算法。从本质上来说,它是归并排序的就地版本。快速排序可以由下面四步组成。 (1)如果不多于1个数据,直接返回。 (2)一般选择序列最左边的值作为支点数据。(3)将序列分成2部分,一部分都大于支点数据,另外一部分都小于支点数据。 (4)对两边利用递归排序数列。 快速排序比大部分排序算法都要快。尽管我们可以在某些特殊的情况下写出比快速排序快的算法,但是就通常情况而言,没有比它更快的了。快速排序是递归的,对于内存非常有限的机器来说,它不是一个好的选择。 2 归并排序(MergeSort)

归并排序先分解要排序的序列,从1分成2,2分成4,依次分解,当分解到只有1个一组的时候,就可以排序这些分组,然后依次合并回原来的序列中,这样就可以排序所有数据。合并排序比堆排序稍微快一点,但是需要比堆排序多一倍的内存空间,因为它需要一个额外的数组。 3 堆排序(HeapSort) 堆排序适合于数据量非常大的场合(百万数据)。 堆排序不需要大量的递归或者多维的暂存数组。这对于数据量非常巨大的序列是合适的。比如超过数百万条记录,因为快速排序,归并排序都使用递归来设计算法,在数据量非常大的时候,可能会发生堆栈溢出错误。 堆排序会将所有的数据建成一个堆,最大的数据在堆顶,然后将堆顶数据和序列的最后一个数据交换。接下来再次重建堆,交换数据,依次下去,就可以排序所有的数据。

Shell排序通过将数据分成不同的组,先对每一组进行排序,然后再对所有的元素进行一次插入排序,以减少数据交换和移动的次数。平均效率是O(nlogn)。其中分组的合理性会对算法产生重要的影响。现在多用D.E.Knuth的分组方法。 Shell排序比冒泡排序快5倍,比插入排序大致快2倍。Shell排序比起QuickSort,MergeSort,HeapSort慢很多。但是它相对比较简单,它适合于数据量在5000以下并且速度并不是特别重要的场合。它对于数据量较小的数列重复排序是非常好的。 5 插入排序(InsertSort) 插入排序通过把序列中的值插入一个已经排序好的序列中,直到该序列的结束。插入排序是对冒泡排序的改进。它比冒泡排序快2倍。一般不用在数据大于1000的场合下使用插入排序,或者重复排序超过200数据项的序列。

数据结构 各种排序算法

数据结构各种排序算法总结 2009-08-19 11:09 计算机排序与人进行排序的不同:计算机程序不能象人一样通览所有的数据,只能根据计算机的"比较"原理,在同一时间内对两个队员进行比较,这是算法的一种"短视"。 1. 冒泡排序 BubbleSort 最简单的一个 public void bubbleSort() { int out, in; for(out=nElems-1; out>0; out--) // outer loop (backward) for(in=0; in a[in+1] ) // out of order? swap(in, in+1); // swap them } // end bubbleSort() 效率:O(N2) 2. 选择排序 selectSort public void selectionSort() { int out, in, min; for(out=0; out

swap(out, min); // swap them } // end for(out) } // end selectionSort() 效率:O(N2) 3. 插入排序 insertSort 在插入排序中,一组数据在某个时刻实局部有序的,为在冒泡和选择排序中实完全有序的。 public void insertionSort() { int in, out; for(out=1; out0 && a[in-1] >= temp) // until one is smaller, { a[in] = a[in-1]; // shift item to right --in; // go left one position } a[in] = temp; // insert marked item } // end for } // end insertionSort() 效率:比冒泡排序快一倍,比选择排序略快,但也是O(N2) 如果数据基本有序,几乎需要O(N)的时间

计算机专业基础综合数据结构(排序)-试卷2

计算机专业基础综合数据结构(排序)-试卷2 (总分:56.00,做题时间:90分钟) 一、单项选择题(总题数:16,分数:32.00) 1.单项选择题1-40小题。下列每题给出的四个选项中,只有一个选项是最符合题目要求的。(分数: 2.00)__________________________________________________________________________________________ 解析: 2.采用简单选择排序,比较次数与移动次数分别为( )。 (分数:2.00) A.O(n),O(log 2 n) B.O(log 2 n),O(n 2 ) C.O(n 2 ),O(n) √ D.O(nlog 2 n),O(n) 解析:解析:简单选择排序的关键字比较次数KCN与对象的初始排列无关。第i趟选择具有最小关键字对象所需的比较次数总是n—i—1次(此处假定整个待排序对象序列有n个对象)。因此,总的关键字比较次 最坏情况是每一趟都要进行交换,总的对象移动次数为RMN=3(n一1)。 3.就排序算法所用的辅助空间而言,堆排序、快速排序、归并排序的关系是( )。 (分数:2.00) A.堆排序<快速排序<归并排序√ B.堆排序<归并排序<快速排序 C.堆排序>归并排序>快速排序 D.堆排序>快速排序>归并排序 解析:解析:此题考查的知识点为排序的空间复杂性。堆排序辅助空间为O(1),快速排序为O(log 2 n),归并排序为O(n)。应选A。 4.一组记录的关键码为(25,48,16,35,79,82,23,40,36,72),其中,含有5个长度为2的有序表,按归并排序的方法对该序列进行一趟归并后的结果为( )。 (分数:2.00) 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 解析:解析:对于(25,48,16,35,79,82,23,40,36,72),(25,48)和(16,35)归并的结果为(16,25,35,48)。(79,82)和(23,40)归并后的结果为(23,40,79,82),余下的两个记录不归并,所以一趟归并后的结果为(16,25,35,48,23,40,79,82,36,72),本题答案为A。 5.已知10个数据元素为(54,28,16,34,73,62,95,60,26,43),对该序列按从小到大排序,经过一趟冒泡排序后的序列为( )。 (分数:2.00) A.16,28,34,54,73,62,60,26,43,95 B.28,16,34,54,62,73,60,26,43,95 √ C.28,16,34,54,62,60,73,26,43,95 D.16,28,34,54,62,60,73,26,43,95 解析:解析:冒泡排序每趟经过比较、交换,从无序区中产生一个最大的元素,所以选B。 6.用某种排序方法对线性表(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 其所采用的排序方法是( )。(分数:2.00) A.直接选择排序√

数据结构课程设计(内部排序算法比较_C语言)

数据结构课程设计 课程名称:内部排序算法比较 年级/院系:11级计算机科学与技术学院 姓名/学号: 指导老师: 第一章问题描述 排序是数据结构中重要的一个部分,也是在实际开发中易遇到的问题,所以研究各种排算法的时间消耗对于在实际应用当中很有必要通过分析实际结合算法的特性进行选择和使用哪种算法可以使实际问题得到更好更充分的解决!该系统通过对各种内部排序算法如直接插入排序,冒泡排序,简单选择排序,快速排序,希尔排序,堆排序、二路归并排序等,以关键码的比较次数和移动次数分析其特点,并进行比较,估算每种算法的时间消耗,从而比较各种算法的优劣和使用情况!排序表的数据是多种不同的情况,如随机产生数据、极端的数据如已是正序或逆序数据。比较的结果用一个直方图表示。

第二章系统分析 界面的设计如图所示: |******************************| |-------欢迎使用---------| |-----(1)随机取数-------| |-----(2)自行输入-------| |-----(0)退出使用-------| |******************************| 请选择操作方式: 如上图所示该系统的功能有: (1):选择1 时系统由客户输入要进行测试的元素个数由电脑随机选取数字进行各种排序结果得到准确的比较和移动次数并 打印出结果。 (2)选择2 时系统由客户自己输入要进行测试的元素进行各种排序结果得到准确的比较和移动次数并打印出结果。 (3)选择0 打印“谢谢使用!!”退出系统的使用!! 第三章系统设计 (I)友好的人机界面设计:(如图3.1所示) |******************************| |-------欢迎使用---------| |-----(1)随机取数-------| |-----(2)自行输入-------| |-----(0)退出使用-------|

数据结构第十章习题课

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个记录的线性表进行快速排序为减少算法的递归深度,以下叙述正确

链表排序算法总结

这个星期做数据结构课设,涉及到两个基于链表的排序算法,分别是基于链表的选择排序算法和归并排序算法。写出来跟大家一起分享一下,希望对数据结构初学朋友有所帮助,高手就直接忽视它吧。话不多说,下面就看代码吧。 [c-sharp]view plaincopy 1.node *sorted(node *sub_root) 2.{ 3.if (sub_root->next) 4. { 5. node * second_half = NULL; 6. node * first_half = sub_root; 7. node * temp = sub_root->next->next; 8.while (temp) 9. { 10. first_half = first_half->next; 11. temp = temp->next; 12.if(temp) 13. temp = temp->next; 14. } 15. second_half = first_half->next; 16. first_half->next = NULL; 17. node * lChild = sorted(sub_root); 18. node * rChild = sorted(second_half); 19.if (lChild->data < rChild->data) 20. { 21. sub_root = temp = lChild; 22. lChild = lChild->next; 23. } 24.else 25. { 26. sub_root = temp = rChild; 27. rChild = rChild->next; 28. } 29.while (lChild&&rChild) 30. { 31.if (lChild->data < rChild->data ) 32. { 33. temp->next = lChild; 34. temp = temp->next; 35. lChild = lChild->next; 36. } 37.else 38. {

数据结构实验五-查找与排序的实现

实验报告 课程名称数据结构实验名称查找与排序的实现 系别专业班级指导教师11 学号实验日期实验成绩 一、实验目的 (1)掌握交换排序算法(冒泡排序)的基本思想; (2)掌握交换排序算法(冒泡排序)的实现方法; (3)掌握折半查找算法的基本思想; (4)掌握折半查找算法的实现方法; 二、实验内容 1.对同一组数据分别进行冒泡排序,输出排序结果。要求: 1)设计三种输入数据序列:正序、反序、无序 2)修改程序: a)将序列采用手工输入的方式输入 b)增加记录比较次数、移动次数的变量并输出其值,分析三种序列状态的算法时间复杂 性 2.对给定的有序查找集合,通过折半查找与给定值k相等的元素。 3.在冒泡算法中若设置一个变量lastExchangeIndex来标记每趟排序时经过交换的最后位置, 算法如何改进? 三、设计与编码 1.本实验用到的理论知识 2.算法设计

3.编码 package sort_search; import java.util.Scanner; public class Sort_Search { //冒泡排序算法 public void BubbleSort(int r[]){ int temp; int count=0,move=0; boolean flag=true; for(int i=1;ir[j+1]){ temp=r[j]; r[j]=r[j+1]; r[j+1]=temp; move++; flag=true; } } } System.out.println("排序后的数组为:"); for(int i=0;i

数据结构各种排序方法的综合比较

数据结构各种排序方法的综合比较 结论: 排序方法平均时间最坏时间辅助存储 简单排序O(n2) O(n2) O(1) 快速排序O(nlogn)O(n2)O(logn) 堆排序O(nlogn)O(nlogn)O(1) 归并排序O(nlogn)O(nlogn)O(n) 基数排序O(d(n+rd))O(d(n+rd))O(rd) PS:直接插入排序、冒泡排序为简单排序,希尔排序、堆排序、快速排序为不稳定排序 一、时间性能 按平均的时间性能来分,有三类排序方法: 时间复杂度为O(nlogn)的方法有:快速排序、堆排序和归并排序,其中以快速排序为最好;时间复杂度为O(n2)的有:直接插入排序、起泡排序和简单选择排序,其中以直接插入为 最好,特别是对那些对关键字近似有序的记录序列尤为如此; 时间复杂度为O(n)的排序方法只有,基数排序。 当待排记录序列按关键字顺序有序时,直接插入排序和起泡排序能达到O(n)的时间复杂度;而对于快速排序而言,这是最不好的情况,此时的时间性能蜕化为O(n2),因此是应该尽量避免的情况。简单选择排序、堆排序和归并排序的时间性能不随记录序列中关键字的分布而改变。 二、空间性能 指的是排序过程中所需的辅助空间大小。 1. 所有的简单排序方法(包括:直接插入、起泡和简单选择)和堆排序的空间复杂度为O(1); 2. 快速排序为O(logn),为栈所需的辅助空间; 3. 归并排序所需辅助空间最多,其空间复杂度为O(n ); 4.链式基数排序需附设队列首尾指针,则空间复杂度为O(rd)。 三、排序方法的稳定性能 1. 稳定的排序方法指的是,对于两个关键字相等的记录,它们在序列中的相对位置,在排序之前和经过排序之后,没有改变。 2. 当对多关键字的记录序列进行LSD方法排序时,必须采用稳定的排序方法。 3. 对于不稳定的排序方法,只要能举出一个实例说明即可。 4. 快速排序和堆排序是不稳定的排序方法

数据结构-各类排序算法总结

数据结构-各类排序算法总结 原文转自: https://www.docsj.com/doc/3c5960064.html,/zjf280441589/article/details/38387103各类排序算法总结 一. 排序的基本概念 排序(Sorting)是计算机程序设计中的一种重要操作,其功能是对一个数据元素集合或序列重新排列成一个按数据元素 某个项值有序的序列。 有n 个记录的序列{R1,R2,…,Rn},其相应关键字的序列是{K1,K2,…,Kn},相应的下标序列为1,2,…,n。通过排序,要求找出当前下标序列1,2,…,n 的一种排列p1,p2,…,pn,使得相应关键字满足如下的非递减(或非递增)关系,即:Kp1≤Kp2≤…≤Kpn,这样就得到一个按关键字有序的记录序列{Rp1,Rp2,…,Rpn}。 作为排序依据的数据项称为“排序码”,也即数据元素的关键码。若关键码是主关键码,则对于任意待排序序列,经排序后得到的结果是唯一的;若关键码是次关键码,排序结果可

能不唯一。实现排序的基本操作有两个: (1)“比较”序列中两个关键字的大小; (2)“移动”记录。 若对任意的数据元素序列,使用某个排序方法,对它按关键码进行排序:若相同关键码元素间的位置关系,排序前与排序后保持一致,称此排序方法是稳定的;而不能保持一致的排序方法则称为不稳定的。 二.插入类排序 1.直接插入排序直接插入排序是最简单的插入类排序。仅有一个记录的表总是有序的,因此,对n 个记录的表,可从第二个记录开始直到第n 个记录,逐个向有序表中进行插入操作,从而得到n个记录按关键码有序的表。它是利用顺序查找实现“在R[1..i-1]中查找R[i]的插入位置”的插入排序。

数据结构(本)期末综合练习

数据结构(本)期末综合练习 综合练习一 一、单项选择题 1.设有头指针为head的带有头结点的非空单向循环链表, 指针p指向其尾结点, 要删除头结点,并使其仍为单向循环链表,则可利用下述语句head =head->next ;()。 A.p =head; B.p=NULL; C.p->next =head; D.head=p; 2.在一个单链表中p指向结点a, q指向结点a的直接后继结点b,要删除结点b,可执行()。 A.p->next=q->next ; B.p=q->next; C.p->next=q; D.p->next=q; 3. 以下说法不正确的是 A. 线性表的链式存储结构不必占用连续的存储空间 B.一种逻辑结构只能有唯一的存储结构 C. 一种逻辑结构可以有不同的存储结构 D.线性表的顺序存储结构必须占用连续的存储空间 4.在一个单向链表中,在p所指结点之后插入一个s所指的结点时,可执行();和p->next=s; A.p= s; B.p->next=s->next; C.p=s->next; D.s->next=p->next; 5.把数据存储到计算机中,并具体体现( )称为物理结构。 A. 数据元素间的逻辑关系 B.数据的处理方法 C.数据的性质 D.数据的运算 6.设有一个长度为23的顺序表,要删除第8个元素需移动元素的个数为()。 A.16 B.14 C.15 D.13 7.链表所具备的特点之一是()。 A.可以随机访问任一结点B.需要占用连续的存储空间 C.插入元素的操作不需要移动元素D.删除元素的操作需要移动元素 8.设一棵有8个叶结点的二叉树,度数为1的结点有3个,则该树共有() 个结点。 A.20 B.18 C.17 D.16 9.图状结构中数据元素的位置之间存在()的关系。 A.一对一B.多对多 C.一对多D.每一个元素都有一个直接前驱和一个直接后继 10.一棵具有5层的完全二叉树,最后一层有4个结点,则该树总共有()个结点。 A.14 B.15 C.19 D.18 11.元素15,9,11,13按顺序依次进栈,则该栈的不可能输出序列是() (进栈出栈可以交替进行)。 A.13,11,9,15 B.15,9,11,13 C.13,11,15,9 D.9,15,13,11 12.设主串为“FABcCDABcdEFaBc”,以下模式串能与主串成功匹配的是()。 A. EFaBc B. ABCdE C. DABCC D .FAbcC 13.设有一个14阶的对称矩阵A(第一个元素为a1,1),采用压缩存储的方式,将其下三角部分以行序为主序存

数据结构综合练习题

数据结构综合练习题

数据结构(一) 一、选择题 1.组成数据的基本单位是( C )。 (A) 数据项(B) 数据类型(C) 数据元素(D) 数据变量 2.设数据结构A=(D,R),其中D={1,2,3,4},R={r},r={<1,2>,<2,3>,<3,4>,<4,1>},则数据结构A 是( C )。 (A) 线性结构(B) 树型结构(C) 图型结构(D) 集合 3.数组的逻辑结构不同于下列( D )的逻辑结构。(A) 线性表(B) 栈(C) 队列(D) 树 4.二叉树中第i(i≥1)层上的结点数最多有(C )个。 (A) 2i (B) 2i(C) 2i-1(D) 2i-1 5.设指针变量p指向单链表结点A,则删除结点A的后继结点B需要的操作为(A )。 (A) p->next=p->next->next (B) p=p->next (C) p=p->next->next (D) p->next=p 6.设栈S和队列Q的初始状态为空,元素E1、E2、E3、E4、E5和E6依次通过栈S,一个元素出栈后即进入队列Q,若6个元素出列的顺序为E2、E4、E3、E6、E5和E1,则栈S的容量至少应该是( C )。 (A) 6 (B) 4 (C) 3 (D) 2

7.将10阶对称矩阵压缩存储到一维数组A中,则数组A 的长度最少为( C )。 (A) 100 (B) 40 (C) 55 (D) 80 8.设结点A有3个兄弟结点且结点B为结点A的双亲结点,则结点B的度数数为( B )。 (A) 3 (B) 4 (C) 5 (D) 1 9.根据二叉树的定义可知二叉树共有( B )种不同的形态。 (A) 4 (B) 5 (C) 6 (D) 7 10.设有以下四种排序方法,则( B )的空间复 杂度最大。 (A) 冒泡排序(B) 快速排序(C) 堆排序(D) 希尔排序 11、以下说法正确的是( A ) A.连通图的生成树,是该连通图的一个极小连通子图。 B.无向图的邻接矩阵是对称的,有向图的邻接矩阵一定是不对称的。 C.任何一个有向图,其全部顶点可以排成一个拓扑序列。 D.有回路的图不能进行拓扑排序。 12、以下说法错误的是 ( D ) A.一般在哈夫曼树中,权值越大的叶子离根结点越近 B.哈夫曼树中没有度数为1的分支结点 C.若初始森林中共有n裸二叉树,最终求得的哈夫曼树

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

第九章 查找 一、填空题 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

十 大 经 典 排 序 算 法 总 结 超 详 细

数据挖掘十大经典算法,你都知道哪些? 当前时代大数据炙手可热,数据挖掘也是人人有所耳闻,但是关于数据挖掘更具体的算法,外行人了解的就少之甚少了。 数据挖掘主要分为分类算法,聚类算法和关联规则三大类,这三类基本上涵盖了目前商业市场对算法的所有需求。而这三类里又包含许多经典算法。而今天,小编就给大家介绍下数据挖掘中最经典的十大算法,希望它对你有所帮助。 一、分类决策树算法C4.5 C4.5,是机器学习算法中的一种分类决策树算法,它是决策树(决策树,就是做决策的节点间的组织方式像一棵倒栽树)核心算法ID3的改进算法,C4.5相比于ID3改进的地方有: 1、用信息增益率选择属性 ID3选择属性用的是子树的信息增益,这里可以用很多方法来定义信息,ID3使用的是熵(shang),一种不纯度度量准则,也就是熵的变化值,而 C4.5用的是信息增益率。区别就在于一个是信息增益,一个是信息增益率。 2、在树构造过程中进行剪枝,在构造决策树的时候,那些挂着几个元素的节点,不考虑最好,不然容易导致过拟。 3、能对非离散数据和不完整数据进行处理。 该算法适用于临床决策、生产制造、文档分析、生物信息学、空间数据建模等领域。 二、K平均算法

K平均算法(k-means algorithm)是一个聚类算法,把n个分类对象根据它们的属性分为k类(kn)。它与处理混合正态分布的最大期望算法相似,因为他们都试图找到数据中的自然聚类中心。它假设对象属性来自于空间向量,并且目标是使各个群组内部的均方误差总和最小。 从算法的表现上来说,它并不保证一定得到全局最优解,最终解的质量很大程度上取决于初始化的分组。由于该算法的速度很快,因此常用的一种方法是多次运行k平均算法,选择最优解。 k-Means 算法常用于图片分割、归类商品和分析客户。 三、支持向量机算法 支持向量机(Support Vector Machine)算法,简记为SVM,是一种监督式学习的方法,广泛用于统计分类以及回归分析中。 SVM的主要思想可以概括为两点: (1)它是针对线性可分情况进行分析,对于线性不可分的情况,通过使用非线性映射算法将低维输入空间线性不可分的样本转化为高维特征空间使其线性可分; (2)它基于结构风险最小化理论之上,在特征空间中建构最优分割超平面,使得学习器得到全局最优化,并且在整个样本空间的期望风险以某个概率满足一定上界。 四、The Apriori algorithm Apriori算法是一种最有影响的挖掘布尔关联规则频繁项集的算法,其核心是基于两阶段“频繁项集”思想的递推算法。其涉及到的关联规则在分类上属于单维、单层、布尔关联规则。在这里,所有支持度大于最小支

数据结构课程设计排序算法总结

排序算法: (1) 直接插入排序 (2) 折半插入排序(3) 冒泡排序 (4) 简单选择排序 (5) 快速排序(6) 堆排序 (7) 归并排序 【算法分析】 (1)直接插入排序;它是一种最简单的排序方法,它的基本操作是将一个记录插入到已排好的序的有序表中,从而得到一个新的、记录数增加1的有序表。 (2)折半插入排序:插入排序的基本操作是在一个有序表中进行查找和插入,我们知道这个查找操作可以利用折半查找来实现,由此进行的插入排序称之为折半插入排序。折半插入排序所需附加存储空间和直接插入相同,从时间上比较,折半插入排序仅减少了关键字间的比较次数,而记录的移动次数不变。 (3)冒泡排序:比较相邻关键字,若为逆序(非递增),则交换,最终将最大的记录放到最后一个记录的位置上,此为第一趟冒泡排序;对前n-1记录重复上操作,确定倒数第二个位置记录;……以此类推,直至的到一个递增的表。 (4)简单选择排序:通过n-i次关键字间的比较,从n-i+1个记录中选出关键字最小的记录,并和第i(1<=i<=n)个记录交换之。 (5)快速排序:它是对冒泡排序的一种改进,基本思想是,通过一趟排序将待排序的记录分割成独立的两部分,其中一部分记录的关键字均比另一部分记录的关键字小,则可分别对这两部分记录继续进行排序,以达到整个序列有序。 (6)堆排序: 使记录序列按关键字非递减有序排列,在堆排序的算法中先建一个“大顶堆”,即先选得一个关键字为最大的记录并与序列中最后一个记录交换,然后对序列中前n-1记录进行筛选,重新将它调整为一个“大顶堆”,如此反复直至排序结束。 (7)归并排序:归并的含义是将两个或两个以上的有序表组合成一个新的有序表。假设初始序列含有n个记录,则可看成是n个有序的子序列,每个子序列的长度为1,然后两两归并,得到n/2个长度为2或1的有序子序列;再两两归并,……,如此重复,直至得到一个长度为n的有序序列为止,这种排序称为2-路归并排序。 【算法实现】 (1)直接插入排序: void InsertSort(SqList &L){ for(i=2;i<=L.length ;i++) if(L.elem[i]L.elem[0];j--) L.elem [j+1]=L.elem [j]; L.elem [j+1]=L.elem[0]; } } (2)折半插入排序:

计算机专业基础综合数据结构(排序)历年真题试卷汇编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.希尔插,A C.交换 D.快速√ 7.如果只想得到1000个元素组成的序列中第5个最小元素之前的部分排序的序列,用( )方法最快。【清华大学1998一、2(2分)】 A.起泡排序 B.快速排列 C.Shell排序 D.堆排序√ E.简单选择排序

目前最完整的数据结构1800题包括完整答案 第十章 排序

第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.堆排序。 11.下列内部排序算法中:【北京工业大学 2000 一、1 (10分每问2分)】A.快速排序 B.直接插入排序 C. 二路归并排序 D. 简单选择排序 E. 起泡排序F. 堆排序 (1)其比较次数与序列初态无关的算法是()(2)不稳定的排序算法是()(3)在初始序列已基本有序(除去n个元素中的某k个元素后即呈有序,k<

数据结构各种常用排序算法综合

#include"stdio.h" #define LT(a,b) ((a)<(b)) #define LQ(a,b) ((a)>(b)) #define maxsize 20 typedef int keytype; typedef struct{ keytype key; }RedType; typedef struct{ RedType r[maxsize+1]; int length; }Sqlist; //直接插入排序 void insertsort(Sqlist &L){ int i,j; for(i=2;i<=L.length;++i) if(LT(L.r[i].key,L.r[i-1].key)){ L.r[0]=L.r[i]; L.r[i]=L.r[i-1]; for(j=i-2;LT(L.r[0].key,L.r[j].key);--j) L.r[j+1]=L.r[j]; L.r[j+1]=L.r[0]; }//if }//insertsort //折半插入排序 void BInsertSort(Sqlist &L) { int i,j,low,high,m; for(i=2;i<=L.length;++i) { L.r[0]=L.r[i]; low=1; high=i-1; while(low<=high){ m=(low+high)/2; if(LT(L.r[0].key,L.r[m].key)) high=m-1; else low=m+1; }//while for(j=i-1;j>=high+1;--j) L.r[j+1]=L.r[j]; L.r[high+1]=L.r[0]; }//for

数据结构课程设计之综合排序代码及使用方法

题目1: 利用随机函数产生N个随机整数(20000以上),对这些数进行多种方法进行排序。 要求: 1)至少采用三种方法实现上述问题求解(提示,可采用的方法有插入排序、希尔排序、起泡排序、快速排序、选择排序、堆排序、归并排序)。并把排序后的结 果保存在不同的文件中。 2)统计每一种排序方法的性能(以上机运行程序所花费的时间为准进行对比),找出其中两种较快的方法。 代码如下: #include //标准输入输出头文件 #include //定义杂项函数及内存分配函数 #include //字符串处理 #include //定义关于时间的函数 #define N 20000 clock_t Start,Now;//时钟 void Wrong()//错误输出 { printf("\n*****按键错误!请重新输入*****\n"); getchar();//从标准输入获取字符并返回下一个字符 } void change(int a[])//十个一行输出 { int i; system("cls");//清除之前的操作 for(i=0;i

相关文档
相关文档 最新文档