排序详细知识点看往期文章:排序
目录
1.下列排序算法中,( )算法在进行一趟相应的排序处理结束后不一定能选出一个元素放到其最终位置上。(2.0分)
3.一组记录的排序码为(25, 48, 16, 35, 79, 82, 23, 40, 36, 72),其中含有5个长度为2的有序表,按归并排序的方法对该序进行一趟归并后的结果为( )。
4.对具有n个元素的有序查找表采用折半查找算法查找一个键值, 其最坏比较次数的数量级为()
5.利用直接选择排序算法对有n个记录的数据表进行排序,在最坏情况下,记录的交换次数为
6.一组记录的排序码为(46, 79, 56, 38, 40, 84),则利用堆排序的方法建立的初始堆为( )
7.用某种排序方法对序列(25,84, 21, 47, 15, 27, 68, 35, 20)进行排序,记录序列的变化情况
8.下列排序方法中,哪一种方法的比较次数与待排序序列的初始排列状态无关? ( )
9.对于键值序列(11,13, 18, 60, 15, 7, 19, 25, 12, 80) ,用筛选法建堆,必须从键值为(15 )
10.一组关键字记录是(26, 15, 37, 18, 21, 59, 47, 6),对其进行Shell排序,假设初始增量d=4,
1.待排序序列{25, 84, 71, 47, 15, 27, 68, 35, 20},写出一趟归并排序后的结果
2.待排序序列{25, 84, 71, 47, 15, 27, 68, 35, 20}, 写出使用基数排序,一趟分配及收集后的结果
3.初始关键字序列{25,84, 21, 47, 15, 27, 68, 35, 20}, 若使用shelI排序,
写出一趟shell排序后的结果(5分) ,需要几趟排序才能得到有序序列? (1分)
4.初始关键字序列{25,84, 21, 47, 15, 27, 68, 35, 20}, 写出一趟快排序后的结果
5.初始关键字序列{25, 84, 21, 47, 15, 27, 68, 35, 20}, 若使用堆排序将序列降序排列,画出初始堆,并写出一趟排序后的序列。
一、选择题
1.下列排序算法中,( )算法在进行一趟相应的排序处理结束后不一定能选出一个元素放到其最终位置上。(2.0分)
A.直接选择排序 能够取出当前无序序列中最(小or大)值与第一位置的元素互换位置
B.冒泡排序总是两两比较选出一个最值位于数组前面
C.归并排序. 除非在缓存区一次放入所有的序列(这样得不偿失),否则不能确定最终位置
D.堆排序 每趟总能选出一个最值位于根节点
√快速排序选出的枢轴在一趟排序中就位于了它最终的位置
×插入排序(直接、二分)不一定会位于最终的位置,因为不确定后面插入的元素对于前面的元素是否产生影响。
×希尔排序(本质也是插入排序)只在子序列中直接插入排序。所以不能确定。
希尔排序每次是对划分的子表进行排序,得到局部有序的结果,所以不能保证每一趟排序结束都能确定一个元素的最终位置
所以能够在一趟结束后,就选出一个元素在其最终的位置上的排序是否就只有 :
简单选择排序、快速排序、冒泡排序、堆排序
2.折半查找法要求查找表中各元素的键值必须是( )
A.递增或递减
B.递增
C.递减
基本思想是:首先用要查找的关键字k与中间位置的结点的关键字相比较,这个中间结点把线性表分成了两个子表,若比较结果相等则查找完成;若不相等,再根据k与该中间结点关键字的比较大小确定下一步查找哪个子表,这样递归进行下去,直到找到满足条件的结点或者该线性表中没有这样的结点。
3.一组记录的排序码为(25, 48, 16, 35, 79, 82, 23, 40, 36, 72),其中含有5个长度为2的有序表,按归并排序的方法对该序进行一趟归并后的结果为( )。
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
4.对具有n个元素的有序查找表采用折半查找算法查找一个键值, 其最坏比较次数的数量级为()
A. O(logn)
B. O(n)
C. (nlogn)
D. O(n^2)
5.利用直接选择排序算法对有n个记录的数据表进行排序,在最坏情况下,记录的交换次数为
A.n^2
B. n-1
C.n
D.∩+1
1)移动次数最好时(有序)为0,最坏时(逆序)为3*(n-1),比较次数始终为n*(n-1)/2;
2)每一趟排序均有一个元素到达最位置;
3)选择排序是不稳定排序。
算法时间复杂度:最好O(n^2) 最坏O(n^2) 平均O(n^2);
算法改进之后,最好情况(有序)为移动0次,比较(n-1)次,算法时间复杂度为O(n);
最坏情况(逆序)为移动3*(n-1)次,比较n*(n-10/2次,算法时间复杂度为O(n^2)。
6.一组记录的排序码为(46, 79, 56, 38, 40, 84),则利用堆排序的方法建立的初始堆为( )
7.用某种排序方法对序列(25,84, 21, 47, 15, 27, 68, 35, 20)进行排序,记录序列的变化情况
如下:
20 15 21 25 47 27 68 35 84(<25放在左边,>25放在右边)
15 20 21 25 35 27 47 68 84 (左侧:20为基数;右侧:47为基数 快速排序)
15 20 21 25 27 35 47 68 84 (35,27进行子序列排序)
则采取的排序方法是( )
A.直接选择排序
B.冒泡排序
C.快速排序.
D.二路归并排序
8.下列排序方法中,哪一种方法的比较次数与待排序序列的初始排列状态无关? ( )
A.直接插入排序
B.起泡排序
C.快速排序
D. 直接选择排序
9.对于键值序列(11,13, 18, 60, 15, 7, 19, 25, 12, 80) ,用筛选法建堆,必须从键值为(15 )
的结点开始。
10.一组关键字记录是(26, 15, 37, 18, 21, 59, 47, 6),对其进行Shell排序,假设初始增量d=4,
则第一趟排序后的结果为( )
A.(18, 6, 37, 26, 15,59, 47, 21)
B.(21, 15, 37, 6, 26, 59, 47, 18)
C.(26, 15, 37, 18, 21, 59, 47, 6)
D.(6,15, 18, 21, 26, 37, 37, 59)
二、简答题
1.待排序序列{25, 84, 71, 47, 15, 27, 68, 35, 20},写出一趟归并排序后的结果
2.待排序序列{25, 84, 71, 47, 15, 27, 68, 35, 20}, 写出使用基数排序,一趟分配及收集后的结果
3.初始关键字序列{25,84, 21, 47, 15, 27, 68, 35, 20}, 若使用shelI排序,
写出一趟shell排序后的结果(5分) ,需要几趟排序才能得到有序序列? (1分)
希尔排序基本步骤:
步骤一:选择适当步长,碰到偶数,则加1变成奇数,
(以减少相同下标的元素进行重复比较),进行分组。
步骤二:分另对各分分组进行插入排序。重复步骤一。
步骤三:步长依次减半,当步长为1时,且已进行过插入排序后,数组,
已有序。
第一趟排序增量d1=4:
{15,7,21,35,25,84,68,47,20}
第二趟排序增量d2=2:
{15,27,21,35,25,84,68,47,20}
第三趟再进行一趟整体的插入排序
{15,20,21,25,27,35,47,68,84}
当步长为(1=3/2) (取奇数)时,我们执行一次最普通的插入排序。
由于此时,整个数组已有序,所以最后一次插入排序效率还是比较高的。
4.初始关键字序列{25,84, 21, 47, 15, 27, 68, 35, 20}, 写出一趟快排序后的结果
基本策略:设法把待排序序列按某种标准分为大小两组。
例如选择第一条记录R0作为区分标准,将所有大于R0的记录移到R0的右边,
所有小于R0的记录移到R0的左边
递归地分别对两组记录采用同样方式排序,直至划分到每个子部分只包含一个记录