![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Sorting
文章平均质量分 77
Master_Reid
这个作者很懒,什么都没留下…
展开
-
Program work 13. Heap Sort in Java
关键在于最大堆的建立和重构 (其实两个过程是一样的)因为堆是平衡二叉树, 所以数组可以直接用下标表示父子的节点关系, 数组要从下标1开始.将最大值移到数组只需要O(n)重构堆需要O(lgn)所以upper bound is O(n*logn)事实上, lower bound is Ω(n*logn) PseudocodeheapSort (arr, len)原创 2015-04-29 19:51:02 · 326 阅读 · 0 评论 -
Program work 11. Quick Sort in Java
原理性的东西请自行google或wiki, 不再累述Pseudocode:quickSort(array, left, right){ index = partion(array, left, right); if (left < index) { quickSort(array, left, index); } if (index < right) {原创 2015-04-29 16:15:30 · 570 阅读 · 0 评论 -
Program work 12. Merge Sort in Java
Pseudocode:merge(arr, tmp, begin, end){ if (begin < endl) { get middle mergeSort(arr, tmp, begin, middle); mergeSort(arr, tmp, middle, end); merge(arr, tmp, begi原创 2015-04-29 16:40:16 · 403 阅读 · 0 评论 -
Program work 16. Radix Sort in Java
不是基于比较的排序是基于位数上的排序, 且仅适用于整数.此位数的排序不会影响前一位数排序好的相对位置, 是stable的排序影响效能的关键在于数组中最大数字的位数最差时间复杂度为O(d*n).另外需要O(n)spaced是最大数字的位数, 决定循环的轮数, n是每轮处理的数目的大小.PseudocoderadixSort (arr, tmp){原创 2015-04-30 10:32:05 · 369 阅读 · 0 评论 -
Program work 14. Insertion Sort in Java
最差时间复杂度: O(n*n)最好时间复杂度: O(n), 已经排好序平均时间复杂度: O(n*n)Pseudocode:for i ← 1 to length(A) - 1 j ← i while j > 0 and A[j-1] > A[j] swap A[j] and A[j-1] j ← j - 1 end w原创 2015-04-30 10:02:32 · 282 阅读 · 0 评论 -
Program work 15. Shell Sort in Java
Shell本质上就是insertion sort但是在insertion sort之前, 先做gap大于1的insertion sort这样在最后一步做insertion sort的时候, 由于数组已经接近排序完成所以最后的insertion sort会非常快, 最后一步O(n)时间复杂度根据gap的选取而不同. 这里使用Hibbard的gap, 2的k次方-1: [1,原创 2015-04-30 10:12:42 · 339 阅读 · 0 评论 -
Program work 18. Bubble Sort in Java
每轮操作将该轮最大的数放入数组"末尾"最差平均时间复杂度为O(n*n)最好时间复杂度为O(n), 需要加标记, 且数组已排好序的情况下Pseudocode:bubblesort (A : list[0..n-1]) { var i, j; for i from 0 to n-2 { for j from 0 to n-2-i {原创 2015-04-30 11:13:03 · 333 阅读 · 0 评论 -
Program work 17. Selection Sort in Java
每轮循环将该轮最小的数放在前面已排好的数的末尾最好最坏平均复杂度是O(n*n)Pseudocode:selectionSort (arr){ Find the smallest card. Swap it with the first card. Find the second-smallest card. Swap it with the secon原创 2015-04-30 11:02:57 · 463 阅读 · 0 评论