常用排序速记(学渣专用)

常用排序速记(学渣专用)

插入类:直接插入、折半插入、希尔排序
交换类:起泡排序、快速排序
选择类:简单选择、堆排序
二路并归
基数排序
其中不稳定的是:快些选 一 堆
++++++++++ 快速+希尔+选择+堆排序

排序的趟数与初始排列无关的是:鸡 龟 插入 哲学班 学 习 一趟
+++++++++++++++++++++基数+归并+插入+折半+选择+希尔

排序的比较次数与初始排列无关的是:鸡 龟 哲 学 比较无关
++++++++++++++++++++++++++基数+归并+折半+选择

打这么多加号是因为我打不出来空格

直接插入

  1. 简单例子
    3 5 2 4 1
    35 2 4 1
    3 52 4 1
    2 3 54 1
    2 3 4 51
    1 2 3 4 5
  2. 时间复杂度 O(n2)
  3. 空间复杂度 O(1)
  4. 稳定

折半插入

  1. 简单例子
有序无序
23541

1.4与3比 再与5比

有序无序
23451

2.1与3比,再与2比

有序无序
12345

这个为什么这么宽?我该怎么调?疯了。

  1. 时间复杂度 最好O(nlogn) 最差O(n2)平均 O(n2)
  2. 空间复杂度 O(1)
  3. 稳定

希尔排序

  1. 简单例子
    3 5 2 4 1 6
    希尔说 n/2向下取整
    以3为增量:
    34
    5 1
    我空2 6
    排完一趟:
    34
    1 5
    我空2 6

    以1为增量排完:
    1 2 3 4 5 6

==心好累。==标黄
。。。
不标拉倒,一点都不智能!小拳拳谴责程序员!

  1. 时间复杂度 O(n2)
  2. 空间复杂度 O(1)
  3. 不稳定

起泡排序

  1. 简单例子
    3 5 2 4 1
    选出最大的放最后:
    3 2 4 1 5
    很多年之后:
    1 2 3 4 5

代码:
flag=0;
{交换
flag=1}
flag==0,return;

  1. 时间复杂度 O(n2)
  2. 空间复杂度 O(1)
  3. 稳定

快速排序

  1. 简单例子
    3 5 2 4 1
    ij
    j往左找比i小的,找到就交换
    i j
    i再往右找比i大的找到就交换
    i j
    ij相遇就结束,此时的位置就是i的最终位置
    ij

  2. 时间复杂度 最好O(nlogn) 最差O(n2)平均 O(nlogn)

  3. 空间复杂度 O(logn)

  4. 不稳定

简单选择排序

  1. 简单例子
有序无序
23541

选最小的放到前面

有序无序
12354

再选最小的放到前面

有序无序
12354

最后

有序无序
12345

表格也不显示了,我明明什么都没动,它自己消失了
我!@#¥%%……&&
忍。
2. 时间复杂度 O(n2)
3. 空间复杂度 O(1)
4. 不稳定

堆排序

  1. 简单例子

    23541
    化成大顶堆
    2
    3 5
    4 1
    求求你别再吃我的空格了

仿佛上面是一棵树哈

然后将堆顶关键字2跟3 5比,与最大的5交换,5放在顶上
此时,5已经到了它最终位置
就完成了一趟

然后下面的再继续直到完成

  1. 时间复杂度 O(nlogn)
  2. 空间复杂度 O(1)
  3. 不稳定

二路归并

  1. 简单例子
    23451分成5个子序列:
    2
    3
    4
    5
    1
    两两归并:
    23
    45
    1
    继续两两归并:
    2345
    1
    最后:
    12345

  2. 时间复杂度 O(nlogn)

  3. 空间复杂度 O(1)

  4. 稳定

基数排序(桶排序)

  1. 简单例子
    232 114 156 464
    低位优先:
    按个位数排序:
    232 114 464 156
    按照十位排序:
    114 232 156 464
    按百位排序:
    114 156 232 464
    成功了!神奇吧!
    【ps:桶是队列,先进先出】
    2. 时间复杂度 O(d(n+rd))
    n为关键字数,d为关键字的关键字位数
    比如930 d=3
    是十进制,数字有0~9,rd=10
    3. 空间复杂度 O(rd)
    4. 稳定

如果再给我一次机会,我希望我能把用户名改成vegetable bird

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值