”选择排序 “
”每一趟将待排序的最小元素(或最大元素)加入有序子序列 “
”堆排序 “
在回顾一下6.006中对与堆的定义,
结合之前学到的二叉树的顺序存储就不难理解了
”堆是一个顺序存储的完全二叉树“
了解了大根堆和小根堆的定义后,再回来看选择排序的核心思路:
”每一趟将待排序的最小元素(或最大元素)加入有序子序列 “
显然,如果我们已经拥有了一个大根堆/小根堆,上述的选择操作自然就变得十分简单,无非是取根结点的元素罢了,那么如何构造大根堆/小根堆呢?
代码解释
既然已经知道了如何构造大根堆,那么利用它进行排序就十分简单了:
重复上述步骤直至元素有序
关键在于 “下坠 ”过程,即分析 HeadAdjust函数:
link:https://www.cnblogs.com/potofsalt/p/14773949.html#heap_sort
“堆排序不具有稳定性 ”
”Now I‘m rising “
”when i was drowning“
”考试有时会考关键字的比较次数 “
”归并排序 ”
”与前述的交换、选择等排序思想不一样,归并的含义是将两个或两个以上的有序表组合成一个新的有序表 “
二路归并:将两个有序表合并为一个新的有序表
“内部排序中一般采用二路归并 ”
“归并 ”
“归并排序 ”
“基数排序 ”
“要求能够手动模拟排序过程 ”
”收集 Q[i]上的所有元素的时间复杂度为O(1),因为只需将Q[i]的 front指针赋给表尾指针 p的 next即可 “
原文:https://www.cnblogs.com/potofsalt/p/14964663.html