1.在排序方法中,关键码比较次数与记录地初始排列无关的是(选择排序、插入排序)。
2.希尔排序又称“缩小增量排序”,即每趟只对相同增量距离的关键字进行比较,这与关键字序列初始有序或无序无关。
3.一趟排序结束后不一定能够选出一个元素放在其最终位置上的是插入排序类(直接插入、希尔)。
解释:
A、堆排序可以把最大的或者最小的放在堆顶,所以是可以在一趟排序之后将其中一个放在最终位置的。
B、冒泡排序在一趟排序之后把最大的放在了最右边。
C、快速排序的过程是选出一个作为基准,大的放在基准的右边,小的放在基准的左边,然后递归实现,所以: 基准是可以放在最终的位置的。
D、希尔排序属于插入排序,而插入排序是不能保证在第一次排序后放在最终位置。
4.任何一个基于"比较"的内部排序的算法,若对6个元素进行排序,则在最坏情况下所需的比较次数至少为(10)。
解释:
因为6个数字的排列组合是6!,
按照决策树每次可以判断一半的情况,2^k
要求2^k > 6!
取log后得到 k > log(6!) = log(720)
log(2^9) = log(512) = 9 < log(720) < log(2^10) = log(1024) = 10,
所以应该至少选10次。
5.堆排序:升序建大堆,降序建小堆。
解释:小顶堆:输出递增,排序递减;大顶堆:输出递减,排序递增。
6.计数排序辅助数组的长度为max-min+1,max和min为待排序序列的最大值和最小值。
7.对于交换排序类(冒泡、快速)和选择排序类(简单选择、堆),每一趟都能确定一个元素的最终位置。
8.总结:
总排序趟数与初始状态无关的有:(除了快速排序和优化的冒泡,其他都是)
算法复杂度与初始状态无关的有:堆排序(O(n*logn))、归并排序(O(n*logn))、直接选择排序(O(n*n))、基数排序(O(d+r))。
元素总比较次数与初始状态无关的有:选择排序(直接选择、堆)、基数排序。
元素总移动次数与初始状态无关的有:归并排序、基数排序。