数据结构 排序 考研真题精选.docx
- 文档编号:9859351
- 上传时间:2023-02-07
- 格式:DOCX
- 页数:49
- 大小:163.66KB
数据结构 排序 考研真题精选.docx
《数据结构 排序 考研真题精选.docx》由会员分享,可在线阅读,更多相关《数据结构 排序 考研真题精选.docx(49页珍藏版)》请在冰豆网上搜索。
数据结构排序考研真题精选
第三部分考研真题精选
一、选择题
1.某内排序方法的稳定性是指()。
A.该排序算法不允许有相同的关键字记录B.该排序算法允许有相同的关键字记录
C.平均时间为0(nlogn)的排序方法D.以上都不对
2.下面给出的四种排序法中()排序法是不稳定性排序法。
A.插入B.冒泡C.二路归并D.堆积
3.下列排序算法中,其中()是稳定的。
A.堆排序,冒泡排序B.快速排序,堆排序
C.直接选择排序,归并排序D.归并排序,冒泡排序
4.稳定的排序方法是()
A.直接插入排序和快速排序B.折半插入排序和起泡排序
C.简单选择排序和四路归并排序D.树形选择排序和shell排序
5.下列排序方法中,哪一个是稳定的排序方法?
( )
A.直接选择排序B.二分法插入排序C.希尔排序D.快速排序
6.若要求尽可能快地对序列进行稳定的排序,则应选(A.快速排序B.归并排序C.冒泡排序)。
7.如果待排序序列中两个数据元素具有相同的值,在排序前后它们的相互位置发生颠倒,则称该排序算法是不稳定的。
()就是不稳定的排序方法。
A.起泡排序B.归并排序C.Shell排序D.直接插入排序E.简单选择排序
8.若要求排序是稳定的,且关键字为实数,则在下列排序方法中应选()排序为宜。
A.直接插入B.直接选择C.堆D.快速E.基数
9.若需在O(nlog2n)的时间内完成对数组的排序,且要求排序是稳定的,则可选择的排序方法是()。
A.快速排序B.堆排序C.归并排序D.直接插入排序
10.下面的排序算法中,不稳定的是()
A.起泡排序B.折半插入排序C.简单选择排序D.希尔排序E.基数排序F.堆排序。
11.下列内部排序算法中:
A.快速排序B.直接插入排序C.二路归并排序D.简单选择排序E.起泡排序F.堆排序
(1)其比较次数与序列初态无关的算法是()
(2)不稳定的排序算法是()
(3)在初始序列已基本有序(除去n个元素中的某k个元素后即呈有序,k< (4)排序的平均时间复杂度为O(n•logn)的算法是()为O(n•n)的算法是() 12.排序趟数与序列的原始状态有关的排序方法是()排序法。 A.插入B.选择C.冒泡D.快速 13.下面给出的四种排序方法中,排序过程中的比较次数与排序方法无关的是。 () A.选择排序法B.插入排序法C.快速排序法D.堆积排序法 14.对下列四种排序方法,在排序中关键字比较次数同记录初始排列无关的是()。 A.直接插入B.二分法插入C.快速排序D.归并排序 15.在下列排序算法中,哪一个算法的时间复杂度与初始排序无关()。 A.直接插入排序B.气泡排序C.快速排序D.直接选择排序 16.比较次数与排序的初始状态无关的排序方法是()。 A.直接插入排序B.起泡排序C.快速排序D.简单选择排序 17.数据序列(8,9,10,4,5,6,20,1,2)只能是下列排序算法中的()的两趟排序后的结果。 A.选择排序B.冒泡排序C.插入排序D.堆排序 18.数据序列(2,1,4,9,8,10,6,20)只能是下列排序算法中的()的两趟排序后的结果。 A.快速排序B.冒泡排序C.选择排序D.插入排序 19.对一组数据(84,47,25,15,21)排序,数据的排列次序在排序的过程中的变化为 (1)8447251521 (2)1547258421(3)1521258447(4)1521254784 则采用的排序是()。 A.选择B.冒泡C.快速D.插入 20.对序列{15,9,7,8,20,-1,4}进行排序,进行一趟后数据的排列变为{4,9,-1,8,20,7,15};则采用的是()排序。 A.选择B.快速C.希尔D.冒泡 21.若上题的数据经一趟排序后的排列为{9,15,7,8,20,-1,4},则采用的是()排序。 A.选择B.堆C.直接插入D.冒泡 22.下列排序算法中()不能保证每趟排序至少能将一个元素放到其最终的位置上。 A.快速排序B.shell排序C.堆排序D.冒泡排序 23.下列排序算法中()排序在一趟结束后不一定能选出一个元素放在其最终位置上。 A.选择B.冒泡C.归并D.堆 24.下列序列中,()是执行第一趟快速排序后所得的序列。 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] 25.有一组数据(15,9,7,8,20,-1,7,4)用快速排序的划分方法进行一趟划分后数据的排序为()(按递增序)。 A.下面的B,C,D都不对。 B.9,7,8,4,-1,7,15,20 C.20,15,8,9,7,-1,4,7D.9,4,7,8,7,-1,15,20 26.一组记录的关键码为(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) 27.在下面的排序方法中,辅助空间为O(n)的是()。 A.希尔排序B.堆排序C.选择排序D.归并排序 28.下列排序算法中,在待排序数据已有序时,花费时间反而最多的是()排序。 A.冒泡B.希尔C.快速D.堆 29.下列排序算法中,在每一趟都能选出一个元素放到其最终位置上,并且其时间性能受数据初始特性影响的是: ()。 A.直接插入排序B.快速排序C.直接选择排序D.堆排序 30.对初始状态为递增序列的表按递增顺序排序,最省时间的是()算法,最费时间的是()算法。 A.堆排序B.快速排序C.插入排序D.归并排序 31.就平均性能而言,目前最好的内排序方法是()排序法。 A.冒泡B.希尔插入C.交换D.快速 32.如果只想得到1000个元素组成的序列中第5个最小元素之前的部分排序的序列,用()方法最快。 A.起泡排序B.快速排列C.Shell排序D.堆排序E.简单选择排序 33.在文件“局部有序”或文件长度较小的情况下,最佳内部排序的方法是() A.直接插入排序B.冒泡排序C.简单选择排序 34.下列排序算法中,()算法可能会出现下面情况: 在最后一趟开始之前,所有元素都不在其最终的位置上。 A.堆排序B.冒泡排序C.快速排序D.插入排序 35.下列排序算法中,占用辅助空间最多的是: () A.归并排序B.快速排序C.希尔排序D.堆排序 36.从未排序序列中依次取出一个元素与已排序序列中的元素依次进行比较,然后将其放在已排序序列的合适位置,该排序方法称为()排序法。 A.插入B.选择C.希尔D.二路归并 37.在排序算法中,每次从未排序的记录中挑出最小(或最大)关键码字的记录,加入到已排序记录的末尾,该排序方法是()。 A.选择B.冒泡C.插入D.堆 38.用直接插入排序方法对下面四个序列进行排序(由小到大),元素比较次数最少的是()。 A.94,32,40,90,80,46,21,69B.32,40,21,46,69,94,90,80 C.21,32,46,40,80,69,90,94D.90,69,80,46,21,32,94,40 39.直接插入排序在最好情况下的时间复杂度为() A.O(logn)B.O(n)C.O(n*logn)D.O(n2) 40.若用冒泡排序方法对序列{10,14,26,29,41,52}从大到小排序,需进行()次比较。 A.3B.10C.15D.25 41.采用简单选择排序,比较次数与移动次数分别为()。 A.O(n),O(logn)B.O(logn),0(n*n)C.0(n*n),0(n)D.0(nlogn),0(n) 42.对序列{15,9,7,8,20,-1,4,}用希尔排序方法排序,经一趟后序列变为{15,-l,4,8,20,9,7}则该次采用的增量是() A.lB.4C.3D.2 43.对下列关键字序列用快速排序法进行排序时,速度最快的情形是( )。 A.{21,25,5,17,9,23,30}B.{25,23,30,17,21,5,9} C.{21,9,17,30,25,23,5}D.{5,9,17,21,23,25,30} 44.对关键码序列28,16,32,12,60,2,5,72快速排序,从小到大一次划分结果为()。 A.(2,5,12,16)26(60,32,72)B.(5,16,2,12)28(60,32,72) C.(2,16,12,5)28(60,32,72)D.(5,16,2,12)28(32,60,72) 45.对n个记录的线性表进行快速排序为减少算法的递归深度,以下叙述正确的是() A.每次分区后,先处理较短的部分B.每次分区后,先处理较长的部分 C.与算法每次分区后的处理顺序无关D.以上三者都不对 46.当n个整型数据是有序时,对这n个数据用快速排序算法排序,则时间复杂度是(6),当用递归算法求n! 时,算法的时间复杂度是(7),则: (6)-(7)=() A.O(n)B.O(nlogn)C.O(n*n)D.O(logn) 47.快速排序在最坏情况下的时间复杂度是(),比()的性能差。 A.O(NlogN)B.O(N2)C.O(N3)D.堆排序E.冒泡排序F.选择排序 48.快速排序方法在()情况下最不利于发挥其长处。 A.要排序的数据量太大B.要排序的数据中含有多个相同值 C.要排序的数据个数为奇数D.要排序的数据已基本有序 49.在含有n个关键字的小根堆(堆顶元素最小)中,关键字最大的记录有可能存储在()位置上。 A.n/2B.n/2-1C.1D.n/2+2 50.以下序列不是堆的是()。 A.(100,85,98,77,80,60,82,40,20,10,66)B.(100,98,85,82,80,77,66,60,40,20,10) C.(10,20,40,60,66,77,80,82,85,98,100)D.(100,85,40,77,80,60,66,98,82,10,20) 51.下列四个序列中,哪一个是堆()。 A.75,65,30,15,25,45,20,10B.75,65,45,10,30,25,20,15 C.75,45,65,30,15,25,20,10D.75,45,65,10,25,30,20,15 52.堆排序是()类排序,堆排序平均执行的时间复杂度和需要附加的存储空间复杂度分别是() A.插入B.交换C.归并D.基数E.选择 F.O(n2)和O (1)G.O(nlog2n)和O (1) H.O(nlog2n)和O(n)I.O(n2)和O(n) 53.在对n个元素的序列进行排序时,堆排序所需要的附加存储空间是()。 A.O(log2n)B.O (1)C.O(n)D.O(nlog2n) 54.对n个记录的文件进行堆排序,最坏情况下的执行时间是多少? () A.O(log2n)B.O(n)C.O(nlog2n)D.O(n*n) 55.有一组数据(15,9,7,8,20,-1,7,4),用堆排序的筛选方法建立的初始堆为() A.-1,4,8,9,20,7,15,7B.-1,7,15,7,4,8,20,9 C.-1,4,7,8,20,15,7,9D.A,B,C均不对。 56.归并排序中,归并的趟数是()。 A.O(n)B.O(logn)C.O(nlogn)D.O(n*n) 57.在排序算法中每一项都与其它各项进行比较,计算出小于该项的项的个数,以确定该项的位置叫() A.插入排序B.枚举排序C.选择排序D.交换排序 58.就排序算法所用的辅助空间而言,堆排序,快速排序,归并排序的关系是 () A.堆排序〈 快速排序〈归并排序 B.堆排序〈 归并排序〈快速排序 C.堆排序〉归并排序〉快速排序 D.堆排序>快速排序>归并排序 E.以上答案都不对 59.排序方法有许多种, (1)法从未排序的序列中依次取出元素,与已排序序列(初始时为空)中的元素作比较,将其放入已排序序列的正确位置上; (2)法从未排序的序列中挑选元素,并将其依次放入已排序序列(初始时为空)的一端;交换排序方法是对序列中的元素进行一系列比较,当被比较的两元素逆序时,进行交换;(3)和(4)是基于这类方法的两种排序方法,而(4)是比(3)效率更高的方法;(5)法是基于选择排序的一种排序方法,是完全二叉树结构的一个重要应用。 (1)--(5): A.选择排序B.快速排序C.插入排序D.起泡排序 E.归并排序F.shell排序G.堆排序H.基数排序 60.设要将序列(q,h,c,y,p,a,m,s,r,d,f,x)中的关键码按字母升序重新排序, (1)()是初始步长为4的shell排序一趟扫描的结果; (2)()是对排序初始建堆的结果; (3)()是以第一个元素为分界元素的快速一趟扫描的结果。 从下面供选择的答案中选出正确答案填入括号内。 A.f,h,c,d,p,a,m,q,r,s,y,xB.p,a,c,s,q,d,f,x,r,h,m,y C.a,d,c,r,f,q,m,s,y,p,h,xD.h,c,q,p,a,m,s,r,d,f,x,y E.h,q,c,y,a,p,m,s,d,r,f,x 61.对由n个记录所组成的表按关键码排序时,下列各个常用排序算法的平均比较次数分别是: 二路归并排序为 (1),直接插入排序为 (2),快速排序为(3),其中,归并排序和快速排序所需要的辅助存储分别是(4)和(5)。 1-5: A.O (1)B.O(nlog2n)C.O(n)D.O(n2)E.O(n(log2n)2)F.O(log2n) 62.将两个各有N个元素的有序表归并成一个有序表,其最少的比较次数是() A.NB.2N-1C.2ND.N-1 63.基于比较方法的n个数据的内部排序。 最坏情况下的时间复杂度能达到的最好下界是()。 A.O(nlogn)B.O(logn)C.O(n)D.O(n*n) 64.已知待排序的n个元素可分为n/k个组,每个组包含k个元素,且任一组内的各元素均分别大于前一组内的所有元素和小于后一组内的所有元素,若采用基于比较的排序,其时间下界应为()。 A.O(nlog2n)B.O(nlog2k)C.O(klog2n)D.O(klog2k) 65.采用败者树进行k路平衡归并的外部排序算法,其总的归并效率与k() A.有关B.无关 66.采用败者树进行K路平衡归并时,总的(包括访外)归并效率与K()。 A.有关B.无关 二、判断题: 1.当待排序的元素很大时,为了交换元素的位置,移动元素要占用较多的时间,这是影响时间复杂度的主要因素。 () 2.内排序要求数据一定要以顺序方式存储。 () 3.排序算法中的比较次数与初始元素序列的排列无关。 () 4.排序的稳定性是指排序算法中的比较次数保持不变,且算法能够终止。 () 5.在执行某个排序算法过程中,出现了排序码朝着最终排序序列位置相反方向移动,则该算法是不稳定的。 () 6.直接选择排序算法在最好情况下的时间复杂度为O(N)。 () 7.两分法插入排序所需比较次数与待排序记录的初始排列状态相关。 () 8.在初始数据表已经有序时,快速排序算法的时间复杂度为O(nlog2n)。 () 9.在待排数据基本有序的情况下,快速排序效果最好。 () 10.当待排序记录已经从小到大排序或者已经从大到小排序时,快速排序的执行时间最省。 () 11.快速排序的速度在所有排序方法中为最快,而且所需附加空间也最少。 () 12.堆肯定是一棵平衡二叉树。 () 13.堆是满二叉树。 () 14.(101,88,46,70,34,39,45,58,66,10)是堆。 () 15.在用堆排序算法排序时,如果要进行增序排序,则需要采用“大根堆”。 () 16.堆排序是稳定的排序方法。 () 17.归并排序辅助存储为O (1)。 () 18.在分配排序时,最高位优先分配法比最低位优先分配法简单。 () 19.冒泡排序和快速排序都是基于交换两个逆序元素的排序方法,冒泡排序算法的最坏时间复杂性是O(n*n),而快速排序算法的最坏时间复杂性是O(nlog2n),所以快速排序比冒泡排序算法效率更高。 () 20.交换排序法是对序列中的元素进行一系列比较,当被比较的两个元素逆序时,进行交换,冒泡排序和快速排序是基于这类方法的两种排序方法,冒泡排序算法的最坏时间复杂性是O(n*n),而快速排序算法的最坏时间复杂性是O(nlog2n);所以快速排序比冒泡排序效率更高。 () 21.快速排序和归并排序在最坏情况下的比较次数都是O(nlog2n)。 () 22.在任何情况下,归并排序都比简单插入排序快。 () 23.归并排序在任何情况下都比所有简单排序速度快。 () 24.快速排序总比简单排序快。 () 25.中序周游(遍历)平衡的二叉排序树,可得到最好排序的关键码序列。 () 26.外部排序是把外存文件调入内存,可利用内部排序的方法进行排序,因此排序所花的时间取决于内部排序的时间。 () 27.在外部排序时,利用选择树方法在能容纳m个记录的内存缓冲区中产生的初始归并段的平均长度为2m个记录。 () 28.为提高在外排序过程中,对长度为N的初始序列进行“置换—选择”排序时,可以得到的最大初始有序段的长度不超过N/2。 () 29.排序速度,进行外排序时,必须选用最快的内排序算法。 () 30.在完成外排序过程中,每个记录的I/O次数必定相等。 () 31.影响外排序的时间因素主要是内存与外设交换信息的总次数。 () 三、填空题 1.若不考虑基数排序,则在排序过程中,主要进行的两种基本操作是关键字的______和记录的_____。 2.外排序的基本操作过程是_______和_______。 3.属于不稳定排序的有__________。 4.分别采用堆排序,快速排序,冒泡排序和归并排序,对初态为有序的表,则最省时间的是_____算法,最费时间的是______算法。 5.不受待排序初始序列的影响,时间复杂度为O(N2)的排序算法是_____,在排序算法的最后一趟开始之前,所有元素都可能不在其最终位置上的排序算法是_____。 6.直接插入排序用监视哨的作用是_______。 7.对n个记录的表r[1..n]进行简单选择排序,所需进行的关键字间的比较次数为_______。 8.用链表表示的数据的简单选择排序,结点的域为数据域data,指针域next;链表首指针为head,链表无头结点。 selectsort(head) p=head; while(p (1)_______) {q=p;r= (2)_______ while((3)______) {if((4)_______)q=r; r=(5)_______; } tmp=q->data;q->data=p->data;p->data=tmp;p=(6)_______; } 9.下面的c函数实现对链表head进行选择排序的算法,排序完毕,链表中的结点按结点值从小到大链接。 请在空框处填上适当内容,每个空框只填一个语句或一个表达式: #include typedefstructnode{chardata;structnode*link;}node; node*select(node*head) {node*p,*q,*r,*s; p=(node*)malloc(sizeof(node)); p->link=head;head=p; while(p->link! =null) {q=p->link;r=p; while( (1)____) {if(q->link->data q=q->link; } if( (2)____){s=r->link;r->link=s->link;s->link=((3)_____);((4)_____);} ((5)____); } p=head;head=head->link;free(p);return(head); } 10.下面的排序算法的思想是: 第一趟比较将最小的元素放在r[1]中,最大的元素放在r[n]中,第二趟比较将次小的放在r[2]中,将次大的放在r[n-1]中,…,依次下去,直到待排序列为递增序。 (注: <-->)代表两个变量的数据交换)。 voidsort(SqList&r,intn){ i=1; while( (1)__){ min=max=1; for(j=i+1; (2)____;++j) {if((3)____)min=j;elseif(r[j].key>r[max].key)max=j;} if((4)_____)r[min]<---->r[j]; if(max! =n-i+1){if((5)___)r[min]<---->r[n-i+1];else((6)__);} i++; } }//sort 11.表插入排序的基本思想是在结点中设一指针字段,插入Ri时Rl到Ri-1己经用指针按排序码不减次序链结起夹,这时采用顺序比较的方法找到Ri应插入的位置,做链表插入。 如此反复,直到把Rn插入为止。 (1)请完成下列表插人的算法; ①.R[0].LINK← (1)___;R[N].LINK← (2)___; ②.循环,I以-1为步长,从(3)___到(4)___执行 (1)P←R[0].LINK;Q←0 (2)循环,当P>0且(5)__时,反复执行 Q←P;P←(6)___ (3)R[Q].LINK←I;R[I].
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 排序 考研真题精选 考研 精选