十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
从未排序序列中依次取出元素与已排序序列(初始时为空)中的元素进行比较,将其放入已排序序列的正确位置上的方法,这种排序方法称为( )。
创新互联建站长期为上千余家客户提供的网站建设服务,团队从业经验10年,关注不同地域、不同群体,并针对不同对象提供差异化的产品和服务;打造开放共赢平台,与合作伙伴共同营造健康的互联网生态环境。为集安企业提供专业的网站设计制作、成都网站制作,集安网站改版等技术服务。拥有10年丰富建站经验和众多成功案例,为您定制开发。A. 归并排序
B. 冒泡排序
C. 插入排序
D. 选择排序
从未排序序列中挑选元素,并将其依次插入已排序序列(初始时为空)末端的方法,称为( )。
A. 归并排序
B. 冒泡排序
C. 插入排序
D. 选择排序
对n个不同的关键字由小到大进行冒泡排序,在下列( )情况下比较的次数最多。
A. 从小到大排列好的
B. 从大到小排列好的
C. 元素无序
D. 元素基本有序
对n个不同的排序码进行冒泡排序,在元素无序的情况下比较的次数为( )。
A. n+1
B. n
C. n−1
D. n(n−1)/2
快速排序在下列( )情况下最易发挥其长处。
A. 被排序的数据中含有多个相同排序码
B. 被排序的数据已基本有序
C. 被排序的数据完全无序
D. 被排序的数据中的大值和最小值相差悬殊
对n个关键字做快速排序,在最坏情况下,算法的时间复杂度是( )。
A. O(n)
B. O(n2)
C. O(nlog2n)
D. O(n3)
若一组记录的排序码为(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
下列关键字序列中,( )是堆。
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
堆是一种( )排序。
A. 插入
B. 选择
C. 交换
D. 归并
堆的形状是一棵( )。
A. 二叉排序树
B. 满二叉树
C. 完全二叉树
D. 平衡二叉树
若一组记录的排序码为(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
下述几种排序方法中,要求内存大的是( )。
A. 希尔排序
B. 快速排序
C. 归并排序
D. 堆排序
下述几种排序方法中,( )是稳定的排序方法。
A. 希尔排序
B. 快速排序
C. 归并排序
D. 堆排序
数据表中有10000个元素,如果仅要求求出其中大的10个元素,则采用( )算法最节省时间。
A. 冒泡排序
B. 快速排序
C. 简单选择排序
D. 堆排序
下列排序算法中,不能保证每趟排序至少能将一个元素放到其最终的位置上的排序方法是( )。
A. 希尔排序
B. 快速排序
C. 冒泡排序
D. 堆排序
答案:
1-5 CDCDC 6-10 BADBC 11-15 BCCCB
2,12
,16, 30,28,10,16*,20,6,182,12,16
, 30,28,10,16*,20,6,182,12,16, 30
,28,10,16*,20,6,182,12,16,28,30
,10,16*,20,6,182,10,12,16,28,30
,16*,20,6,182,10,12,16,16*,28,30
,20,6,182,10,12,16,16*,20,28,30
,6,182,6,10,12,16,16*,20,28,30
,182,6,10,12,16,16*,18,20,28,30
② 折半插入排序
折半插入排序中的排序功能其实就是直接插入排序,则同①
③ 希尔排序(增量选取5、3和1)
12
,2,16, 30,28,10
,16*,20,6,1810
,2,16,6
,18,12,16*
,20,30,28
(增量:5)
6,2,12,10,18,16,16*,20,30,28 (增量:3)
2,6,10,12,16,16*,18,20,30,28 (增量:1)
④ 冒泡排序
12,2,16, 30,28,10,16*,20,6,18
2,12,16,28,10,16*,20,6,18,30
2,12,16,10,16*,20,6,18,28,30
2,12,10,16,16*,6,18,20,28,30
2,10,12,16,6,16*,18,20,28,30
2,10,12,6,16,16*,18,20,28,30
2,10,6,12,16,16*,18,20,28,30
2,6,10,12,16,16*,18,20,28,30
2,6,10,12,16,16*,18,20,28,30
⑤ 快速排序前面空开,先从后面找
12,2,16, 30,28,10,16*,20,6,18
6,2,10,12,28,30,16,20,16,18
2,6,10,12,18,16,16*,20,28,30
2,6,10,12,16*,16,18,20,28,30
2,6,10,12,16*,16,18,20,28,30
⑥ 简单选择排序
写全,最后一行。
12,2,16, 30,28,10,16*,20,6,18
2,12,16, 30,28,10,16*,20,6,18
2,6,16, 30,28,10,16*,20,12,18
2,6,10, 30,28,16,16*,20,12,18
2,6,10,12,28,16,16*,20, 30,18
2,6,10,12,16,28,16*,20, 30,18
2,6,10,12,16,16*,28,20, 30,182,6,10,12,16,16*,18
,20, 30,282,6,10,12,16,16*,18,20
, 28,302,6,10,12,16,16*,18,20, 28
,30
⑦ 堆排序{画图}
12,2,16, 30,28,10,16*,20,6,18
2,6,12,10,20,18,16,16*,28,30
2,6,10,12,16*,20,18,16,30,20
2,6,10,12,20,16*,28,18,16,30
2,6,10,12,16*,20,16,28,18,30
2,6,10,12,16*,16,20,30,28,18
2,6,10,12,16*,16,18,20,30,28
2,6,10,12,16*,16,18,20,28,30
2,6,10,12,16*,16,18,20,28,30
⑧ 二路归并排序两两对比
2,12,16,30,10,28,16*,20,6,18
2,12,16,30,10,16*,20,28,6,18
2,10,12,16,16*,20,28,30,6,18
2,6,10,12,16,16*,18,20,28,30
尽快做一下
尽快做一下
尽快做一下
尽快做一下
尽快做一下
尽快做一下
尽快做一下
尽快做一下
以下全部复制书上内容。
得出以下几点结论:
(1)当待排序的记录个数n较小时,n2和nlog2n的差别不大,可选用简单的排序
方法。
而当关键字基本有序
时,可选用直接插入排序
或冒泡排序
,排序速度很快,其中直接插入排序最为简单常用、性能最佳
。
(2)当n较大时,应该选用先进的排序方法。对于先进的排序方法,从平均时间性能而言,快速排序最佳
,是目前基于比较的排序方法中最好的方法。但在最坏情况下,即当关键字基本有序时,快速排序的递归深度为n,时间复杂度为O(n2),空间复杂度为O(n)。堆排序
和归并排序
不会出现快速排序的最坏情况,但归并排序的辅助空间较大
。这样,当n较大时,具体选用的原则是:
① 当关键字分布随机
,稳定性不做要求时,可采用快速排序
;
② 当关键字基本有序
,稳定性不做要求时,可采用堆排序
;
③ 当关键字基本有序,内存允许且要求排序稳定
时,可采用归并排序
。
(3)可以将简单的排序方法和先进的排序方法结合使用。
例如,当n较大时,可以先将待排序序列划分成若干子序列,分别进行直接插入排序
,然后再利用归并排序
,将有序子序列合并成一个完整的有序序列。
或者,在快速排序中,当划分子区间的长度小于某值时,可以转而调用直接插入排序
算法。
(4)基数排序的时间复杂度也可写成O(d·n)。因此,它最适用于n值很大而关键字较小的序列。
若关键字也很大,而序列中大多数记录的“最高位关键字”均不同,则亦可先按“最高位关键字”不同将序列分成若干“小”的子序列,而后进行直接插入排序。
但基数排序
使用条件有严格的要求:需要知道各级关键字的主次关系和各级关键字的取值范围,即只适用于像整数和字符这类有明显结构特征的关键字,当关键字的取值范围为无穷集合时,则无法使用基数排序。
(5)从方法的稳定性来比较,基数排序是稳定的内排方法
,所有时间复杂度为O(n2)的简单排序法也是稳定的,然而,快速排序、堆排序和希尔排序
等时间性能较好
的排序方法都是不稳定
的。一般来说,如果排序过程中的“比较”是在“相邻的两个记录关键字”间进行的,则排序方法是稳定的。
(6)在本章讨论的排序方法中,多数是采用顺序表实现的。若记录本身信息量较大,为避免移动记录耗费大量时间,可采用链式存储结构。比如直接插入排序、归并排序
都易于在链表上实现。但像折半插入排序、希尔排序、快速排序和堆排序
,却难于在链表
上实现。
对于外部排序,常用的方法是归并方法,这种方法主要由两个独立的阶段组成:
第一,把待排序的文件划分成若干个子文件;
第二,逐趟归并子文件,最后形成对整个文件的排序。
为减少归并中外存读写的次数,提高外排序的效率,一般通过增大归并路数和减少初始归并段个数两种方案对归并算法进行改进,其中,“多路平衡归并”的方法可以增加归并段的个数,“置换-选择”的方法可以减少初始归并段的个数。
学完本章后,要求掌握与排序相关的基本概念,
如:关键字比较次数
、数据移动次数
、稳定性
、内部排序
、外部排序
。深刻理解各种内部排序方法的基本思想、特点、实现方法及其性能分析,能从时间、空间、稳定性
各个方面对各种排序方法做综合比较,并能加以灵活应用。掌握外部排序
方法中败者树
的建立及归并方法,掌握置换-选择排序
的过程和最佳归并树的构造方法。
选用哪种排序一般综合考虑以下因素:
(1)待排序的记录个数;
(2)记录本身的大小;
(3)关键字的结构及初始状态;
(4)对排序稳定性的要求;
(5)存储结构。
你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧