第6章 排序.docx
- 文档编号:28278280
- 上传时间:2023-07-10
- 格式:DOCX
- 页数:20
- 大小:40.74KB
第6章 排序.docx
《第6章 排序.docx》由会员分享,可在线阅读,更多相关《第6章 排序.docx(20页珍藏版)》请在冰豆网上搜索。
第6章排序
第6章排序
[能力要求]
(1)计算机基础知识:
掌握各种排序算法的思想和实现。
(2)分析问题:
针对具体的排序问题,要能够运用各种排序方法去进行分析,找到最优的算法。
(3)解决方法和建议:
在具体工程应用中,发现了关于排序的问题,要能够解决问题,并提出合理的建议。
(4)设计过程的分段与方法:
采取不同的阶段去设计(概念设计、详细设计)一个具体的排序算法。
(5)软件实现过程:
了解系统中各个模块中的关于排序的问题;讨论算法(数据结构、控制流程、数据流程);使用编程语言实施低层设计(编程)。
6.1知识点:
直接插入排序
一、选择题
1②用直接插入排序方法对下面四个序列进行排序(由小到大),元素比较次数最少的是()。
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
2②直接插入排序在最坏情况下的时间复杂度为()
A.O(
)B.O(n)C.O(
)D.O(
)
3②若对n个元素进行直接插入排序,则进行第I趟排序过程前,有序表中的元素个数为()
A.IB.I+1C.I-1D.1
二、填空题
1②直接插入排序用监视哨的作用是_____________________。
【南京理工大学2001】
三、判断题
()1②直接选择排序算法在最好情况下的时间复杂度为O(n)。
【合肥工业大学2001】
四、简答题
1③算法模拟:
设待排序的记录共7个,排序码分别为8,3,2,5,9,1,6。
用直接插入排序以排序码序列的变化描述形式说明排序全过程(动态过程)要求按递减顺序排序。
【山东工业大学1997】
五、算法题
1③请编写直接插入排序算法。
(用C语言写)
Structrcdtype{
Intkey;
Elementotheritem;
}ARRAY[0..n];【北京轻工业学院1998】
6.2知识点:
希尔排序
一、选择题
1③对序列{15,9,7,8,20,-1,4},用希尔排序方法排序,经一趟后序列变为{15,-l,4,8,20,9,7},则该次采用的增量是()
A.lB.4C.3D.2
二、填空题
1③设用希尔排序对数组{98,36,-9,0,47,23,1,8,10,7}进行排序,给出的步长(也称增量序列)依次是4,2,1则排序需__________趟,写出第一趟结束后,数组中数据的排列次序__________。
2③关键码序列{Q,H,C,Y,Q,A,M,S,R,D,F,X},要按照关键码值递增的次序进行排序,若采用初始步长为4的Shell排序法,则一趟扫描的结果是_______________________________;若采用以第一个元素为分界元素的快速排序法,则扫描一趟的结果是________________________________。
【北京大学1997】
三、简答题
1③对下面数据表,写出采用SHELL排序算法排序的每一趟的结果,并标出数据移动情况。
(125,11,22,34,15,44,76,66,100,8,14,20,2,5,1)。
【合肥工业大学1999】
6.3知识点:
冒泡排序
一、选择题
1③若用冒泡排序方法对序列{10,14,26,29,41,52}从大到小排序,需进行()次比较。
A.3B.10C.15D.25
2③若用冒泡排序对关键字序列{18,16,14,12,10,8},进行从小到大的排序,所需进行的关键字比较总次数是()。
A.10B.15C.21D.34
3②对n个不同的排序码进行冒泡排序,在下列哪种情况下比较的次数最多。
()
A.从小到大排列好的B.元素逆序C.元素无序D.元素基本有序
4②对n个不同的排序码进行冒泡排序,在元素无序的情况下比较的次数为()
A.n+1B.nC.n-1D.n(n-1)/2
三、简答题
1②设要求从大到小排序。
问在什么情况下冒泡排序算法关键字交换的次数为最多。
2③设与记录R1,R2,…,Rn对应的关键词分别是K1,K2,…,Kn。
如果存在Ri和Rj使得j
【吉林大学1996】
四、算法题
1④冒泡排序算法是把大的元素向上移(气泡的上浮),也可以把小的元素向下移(气泡的下沉)请给出上浮和下沉过程交替的冒泡排序算法。
【吉林大学2001】
6.4知识点:
快速排序
一、选择题
1③有一组数据{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,7}D.{9,4,7,8,7,-1,15,20}
2③一组记录的关键码为{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}
3③对下列关键字序列用快速排序法进行排序时,速度最快的情形是( )。
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}
4③对关键码序列{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}
5③当n个整型数据是有序时,对这n个数据用快速排序算法排序,则时间复杂度是(),当用递归算法求n!
时,算法的时间复杂度是()。
A.O(n)B.O(
)C.O(
)D.O(
)
6②快速排序在最坏情况下的时间复杂度是(),比()的性能差。
A.O(
)B.O(
)C.O(
)D.堆排序E.冒泡排序F.选择排序
7①快速排序方法在()情况下最不利于发挥其长处。
A.要排序的数据量太大B.要排序的数据中含有多个相同值
C.要排序的数据个数为奇数D.要排序的数据已基本有序
8②在对n个元素进行直接选择排序过程中,第I趟需从()个元素中选择出最小值元素。
A.n-I+1B.n-IC.ID.I+1
二、填空题
1②对于7个元素的集合{1,2,3,4,5,6,7}进行快速排序,具有最小比较和交换次数的初始排列次序为_____________________________。
2②在数据表有序时,快速排序算法的时间复杂度是____________。
【合肥工业大学2001】
三、判断题
()1②快速排序的速度在所有排序方法中为最快,而且所需附加空间也最少。
()2②在初始数据表已经有序时,快速排序算法的时间复杂度为O(
)。
()3②在待排数据基本有序的情况下,快速排序效果最好。
【南京理工大学1997】
四、简答题
1③我们知道,对于n个元素组成的线性表进行快速排序时,所需进行的比较次数与这n个元素的初始排序有关。
问:
【西安电子科技大学2001】【中国矿业大学2000】
(1)当n=7时,在最好情况下需进行多少次比较?
请说明理由。
(2)当n=7时,给出一个最好情况的初始排序的实例。
(3)当n=7时,在最坏情况下需进行多少次比较?
请说明理由。
(4)当n=7时,给出一个最坏情况的初始排序的实例。
2③快速排序(quicksorting)的效率与原始序列有关,现用快速排序算法对关键字分别为1—15的15个元素进行排序:
(1)在最好情况下要进行几遍比较,给出一种原始序列实例;
(2)在最坏情况下要进行几遍比较,给出一种原始序列实例。
【浙江大学1995】
五、算法题
1④写出一趟快速排序算法。
【山东师范大学2000】
2③借助于快速排序的算法思想,在一组无序的记录中查找给定关键字值等于key的记录。
设此组记录存放于数组r[l..h]中。
若查找成功,则输出该记录在r数组中的位置及其值,否则显示“notfind”信息。
请编写出算法并简要说明算法思想。
【北京邮电大学1998】
6.5知识点:
直接选择排序
一、选择题
1③采用简单选择排序,比较次数与移动次数分别为()。
A.O(n),O(
)B.O(
),O(
)
C.O(
),O(n)D.O(
),O(n)
二、填空题
1③对n个记录的表r[1..n]进行简单选择排序,所需进行的关键字间的比较次数为_______。
2③用链表表示的数据的简单选择排序,结点的域为数据域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)______________;
}【南京理工大学2000】
3③下面的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);
}【复旦大学1999】
4④下面的排序算法的思想是:
第一趟比较将最小的元素放在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++;
}
}【南京理工大学2001】
三、简答题
1②算法模拟:
设待排序的记录共7个,排序码分别为8,3,2,5,9,1,6。
用直接选择排序以排序码序列的变化描述形式说明排序全过程(动态过程)要求按递减顺序排序。
【山东工业大学1997】
四、算法题
1④输入50个学生的记录(每个学生的记录包括学号和成绩),组成记录数组,然后按成绩由高到低的次序输出(每行10个记录)。
排序方法采用选择排序。
【北京师范大学1999】
6.6知识点:
堆排序
一、选择题
1③在含有n个关键字的小根堆(堆顶元素最小)中,关键字最大的记录有可能存储在()位置上。
A.n/2B.n/2-1C.1D.n/2+2
2②以下序列不是堆的是()。
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}
3②下列四个序列中,哪一个是堆()。
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
4②堆排序是()类排序,堆排序平均执行的时间复杂度是()和需要附加的存储空间复杂度是()
A.插入B.交换C.归并D.基数E.选择
F.O(
)和O
(1)G.O(
)和O
(1)
H.O(
)和O(n)I.O(
)和O(n)
5②对n个记录的文件进行堆排序,最坏情况下的执行时间是多少?
()
A.O(
)B.O(n)C.O(
)D.O(
)
6③有一组数据{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均不对。
二、填空题
1③堆是一种有用的数据结构.堆排序是一种________排序,堆实质上是一棵________结点的层次序列。
对含有N个元素的序列进行排序时,堆排序的时间复杂度是________,所需的附加存储结点是________。
关键码序列{05,23,16,68,94,72,71,73}是否满足堆的性质________。
【山东工业大学1996】
2②已知一关键码序列为:
3,87,12,61,70,97,26,45。
试根据堆排序原理,填写完整下示各步骤结果。
建立堆结构:
_____________________
交换与调整:
(1)877026614512397;
(2)____________________________;
(3)614526312708797;(4)____________________________;
(5)261234561708797;(6)____________________________;
(7)312264561708797;【首都经贸大学1998】
三、判断题
()1②堆肯定是一棵平衡二叉树。
()2②堆是满二叉树。
()3③{101,88,46,70,34,39,45,58,66,10}是堆。
【北京邮电大学1999】
()4②在用堆排序算法排序时,如果要进行增序排序,则需要采用“大根堆”。
【合肥工业大学2000】
()5②堆排序是稳定的排序方法。
【上海交通大学1998】
四、简答题
1③关于堆排序方法,完成如下工作:
(1)简述该方法的基本思想。
(2)分析该算法的时间复杂度。
【西南财经大学1999】
2②判别序列{12,70,33,65,24,56,48,92,86,33}是否是堆(大顶堆),如果不是,则把它调整为堆。
【燕山大学2001】
3③根据给定的关键字集合{20,15,40,35,45,25,50,30,10}。
(1)构造一棵完全二叉树;
(2)画出整理好的一棵堆树;
(3)画出一棵输出一个排序记录后的二叉树;
(4)画出重新调整好的堆树。
【大连海事大学2001】
4③一最小最大堆(minmaxheap)是一种特定的堆,其最小层和最大层交替出现,根总是处于最小层。
最小最大堆中的任一结点的关键字值总是在以它为根的子树中的所有元素中最小(或最大)。
如图6.1所示为一最小最大堆。
图6.11题图
(1)画出在上图中插入关键字为5的结点后的最小最大堆。
(2)画出在上图中插入关键字为80的结点后的最小最大堆;【浙江大学1996】
6.7知识点:
归并排序
一、选择题
1②归并排序中,归并的趟数是()。
A.O(n)B.O(
)C.O(
)D.O(
)
2②归并排序的时间复杂性是()。
A.O(
)B.O(n)C.O(
)D.O(
)
二、填空题
1③设有字母序列{Q,D,F,X,A,P,N,B,Y,M,C,W},请写出按2路归并排序方法对该序列进行一趟扫描后的结果。
2①外部排序的基本方法是归并排序,但在之前必须先生成。
【北京邮电大学2001】
3②磁盘排序过程主要是先生成,然后对合并,而提高排序速度很重要的是,我们将采用方法来提高排序速度。
【山东工业大学1995】
三、判断题
()1②归并排序辅助存储为O
(1)。
6.8知识点:
基数排序
一、简答题
1③对整数序列{179,208,93,306,55,859,984,9,271,33}图示其基数排序的全过程。
6.9综合习题
一、选择题
1②某内排序方法的稳定性是指()。
A.该排序算法不允许有相同的关键字记录B.该排序算法允许有相同的关键字记录
C.平均时间为O(
)的排序方法D.以上都不对
2①下面给出的四种排序法中()排序法是不稳定性排序法。
A.插入B.冒泡C.二路归并D.堆
3①下列排序算法中,其中()是稳定的。
A.堆排序,冒泡排序B.快速排序,堆排序
C.直接选择排序,归并排序D.归并排序,冒泡排序
4②若要求尽可能快地对序列进行稳定的排序,则应选()。
A.快速排序B.归并排序C.冒泡排序
5②若需在O(
)的时间内完成对数组的排序,且要求排序是稳定的,则可选择的排序方法是()。
A.快速排序B.堆排序C.归并排序D.直接插入排序
6②下列内部排序算法中:
(1)其比较次数与序列初态无关的算法是()
(2)不稳定的排序算法是()
(3)在初始序列已基本有序(除去n个元素中的某k个元素后即呈有序,k< (4)排序的平均时间复杂度为O( )的算法是() (5)为O( )的算法是() A.快速排序B.直接插入排序C.归并排序D.直接选择排序 E.冒泡排序F.堆排序 7②排序趟数与序列的原始状态有关的排序方法是()排序法。 A.插入B.选择C.冒泡D.快速 8③数据序列{8,9,10,4,5,6,20,1,2}只能是下列排序算法中的()的两趟排序后的结果。 A.选择排序B.冒泡排序C.插入排序D.堆排序 9③数据序列{2,1,4,9,8,10,6,20}只能是下列排序算法中的()的两趟排序后的结果。 A.快速排序B.冒泡排序C.选择排序D.插入排序 10③对一组数据{84,47,25,15,21}排序,数据的排列次序在排序的过程中的变化为: (1)8447251521 (2)1547258421 (3)1521258447(4)1521254784 则采用的排序是()。 A.选择B.冒泡C.快速D.插入 11③对序列{15,9,7,8,20,-1,4}进行排序,进行一趟后数据的排列变为{4,9,-1,8,20,7,15};则采用的是()排序。 A.选择B.快速C.希尔D.冒泡 12③若对序列{15,9,7,8,20,-1,4}进行排序经一趟排序后的排列为{9,15,7,8,20,-1,4},则采用的是()排序。 A.选择B.堆C.直接插入D.冒泡 13③下列排序算法中()不能保证每趟排序至少能将一个元素放到其最终的位置上。 A.快速排序B.希尔排序C.堆排序D.冒泡排序 14③下列排序算法中()排序在一趟结束后不一定能选出一个元素放在其最终位置上。 A.选择B.冒泡C.归并D.堆 15②在下面的排序方法中,辅助空间为O(n)的是()。 A.希尔排序B.堆排序C.选择排序D.归并排序 16②下列排序算法中,在待排序数据已有序时,花费时间反而最多的是()排序。 A.冒泡B.希尔C.快速D.堆 17②下列排序算法中,在每一趟都能选出一个元素放到其最终位置上,并且其时间性能受数据初始特性影响的是: ()。 A.直接插入排序B.快速排序C.直接选择排序D.堆排序 18②对初始状态为递增序列的表按递增顺序排序,最省时间的是()算法,最费时间的是()算法。 A.堆排序B.快速排序C.插入排序D.归并排序 19②就平均性能而言,目前最好的内排序方法是()排序法。 A.冒泡B.希尔排序C.直接插入D.快速 20③如果只想得到1000个元素组成的序列中第5个最小元素之前的部分排序的序列,用()方法最快。 A.冒泡排序B.快速排序C.希尔排序D.堆排序E.直接选择排序 21②在文件“局部有序”或文件长度较小的情况下,最佳内部排序的方法是() A.直接插入排序B.冒泡排序C.直接选择排序 22③下列排序算法中,()算法可能会出现下面情况: 在最后一趟开始之前,所有元素都不在其最终的位置上。 A.堆排序B.冒泡排序C.快速排序D.插入排序 23③下列排序算法中,占用辅助空间最多的是: () A.归并排序B.快速排序C.希尔排序D.堆排序 24②从未排序序列中依次取出一个元素与已排序序列中的元素依次进行比较,然后将其放在已排序序列的合适位置,该排序方法称为()排序法。 A.插入B.选择C.希尔D.归并 25②在排序算法中,每次从未排序的记录中挑出最小(或最大)关键码字的记录,加入到已排序
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第6章 排序