Skip to content

Chapter 7 Sorting

约 283 个字 20 张图片 预计阅读时间 1 分钟

alt text

插入排序 insertion sort

alt text

实例:摸牌

逆序对原理解释

alt text

alt text

希尔排序 shell sort

alt text

alt text

alt text

堆排序 heap sort

\[O(N \log N)\]

alt text

最大堆

  1. 建堆

    1. 将所有元素填入堆
    2. 从第一个非叶节点开始perculate down
    3. 依此delete max,将其放到最后

    4. 放到最后即将最上面和最后面交换

    5. 再percdown

给的数据是链表不能用,因为它基于数组

归并排序 merge sort

\[O(N \log N)\]

空间复杂度 \(O(N)\)

merge two sorted list

和链表合并思想一样

递归一下二分然后合并排序

alt text alt text

对cash友好

快速排序 quick sort

alt text

  1. 找一个数字,两边划分
  2. 两边递归

alt text

选择基准元素的方法:Mo3

小数据量

做选择:N小用插入排序

注意:递归过程中递归到数据量小时即切换

alt text alt text

选取 pivot

alt text

main func, mainly partition

alt text

quick sort 选择第k大的数:\(O(N)\)

  • 思路:判断在哪一边,递归

大数据的间接排序

alt text

先排序再移动

下界分析

alt text

基于比较的排序worst case:\(O(N \log N)\)

桶排序

\(m << n\)

\[O(N)\]

alt text

radix sort

alt text

按每一位排

颜色主题调整