X32专项练习部分13
一趟排序放在最终位置
/*
一趟排序结束后不一定能够选出一个元素放在其最终位置上的是()。
正确答案: D
堆排序
冒泡排序
快速排序
希尔排序
最终位置不是最大或者最小值
可以是中间位置
A、堆排序可以把最大的或者最小的放在堆顶,所以是可以在一趟排序之后将其中一个放在最终位置的
堆排序一趟下来就可以将最大或最小值放在堆顶
然后是堆顶下面的做调整
B、冒泡排序在一趟排序之后把最大的放在了最右边
C、快速排序的过程是选出一个作为基准,大的放在基准的右边,小的放在基准的左边
然后递归实现,所以基准是可以放在最终的位置的
D、希尔排序属于插入排序,而插入排序是不能保证在第一次排序后放在最终位置
故选D
堆排序,每次循环将堆顶这个最大数放到数组右边,就是其最终位置
冒泡排序,每次循环,将未排序中最大的数放到数组右边其最终位置
快速排序,每次分割,都要将分割的基准放到中间,就是其最终位置
希尔排序,是先大跨度的插入排序,再小跨度调整,每次插入都会移动以前插入的数据
堆排序的思路重新构建一下
首先将待排序的数组构建成一个大顶堆
将其与末尾元素交换
此时末尾元素就是最大值
然后将其余n-1个元素重新构建成一个堆
此时就能得到n个元素的次大值了
如此反复执行
就能得到一个有序序列了
*/
二路归并的排序过程
/*
对于初始关键字(67,66,77,82,78,51,58),使用二路归并排序,第一趟归并之后其序列变为
正确答案: B
66,67,77,82,51,58,78
66,67,77,82,51,78,58
51,58,66,67,77,78,82
67,66,77,78,82,51,58
按照顺序两两组合,每个组里两个元素进行排序
最后一个元素落单不去管
归并排序抽象排序思路是
先把数组拆分成两两组合的最小单元
然后再两两归并成