那些年我们一起学的排序

目录

前言

排序是我们很早就学的一个几个东西了,虽然说都没什么用,但还是要总结的对不对。于是我开心地开启了放水之旅。

选择排序

§思想

不断从无序序列中找出最小的一个,加入有序序列中。

§分析

特点:
- 慢(平均时间复杂度O( n2 ))
- 没什么用(一般不会用到这种排序方法)
- 不稳定
- 代码太长(相比STL的sort)
(似乎都是缺点。。。来几个优点吧)
- 简单
- 不用思考
- 容易理解
- 一点都不难
(这是不是应该算一个优点啊)

冒泡排序

§思想

重复交换相邻的两个反序元素,最终成为正序。

§分析

特点:
- 慢(平均时间复杂度O( n2 ))
- 没什么用(一般不会用到这种排序方法)
- 不!稳定
- 代码太长(相比STL的sort)
- 简单
- 不用思考
- 容易理解
- 一点都不难
(你一定没有发现相比选择排序的§分析,我只是加了一个标点符号)

插入排序

§思想

把无序数列一个个放到有序数列的相应位置。

§分析

  • 慢(平均时间复杂度O( n2 ))
  • 没什么用(一般不会用到这种排序方法)
  • 不!稳定
  • 代码太长(相比STL的sort)
  • 简单
  • 不用思考
  • 容易理解
  • 一点都不难
    (你一定没有发现相比冒泡排序的§分析,我什么都没有改动)
  • 类似某些人玩牌时整理手中纸牌的过程。
    (还是改一下下吧)☝

插排的师傅希尔排序

§思想

分组插入排序

§分析

  • 慢(平均时间复杂度O( n2 ))
  • 没什么用(一般不会用到这种排序方法)
  • 不稳定
  • 代码太长(相比STL的sort)
  • 没有其他算法那么有名(或许事实不是这样,反正我是这么认为的)

快速排序

§思想

将要排序的数据分割成一部分比另一部分都要小的两部分,然后左右各自递归调用。

§分析

  • 快(平均时间复杂度O(nlogn)
  • 简单
  • 不用思考
  • 容易理解
  • 一点都不难
  • 不稳定

归并排序

§思想

二路归并排序:将数列两两归并,然后再次两两归并直到有序为止二路归并排序。

§分析

  • 较快(平均时间复杂度O(nlogn))
  • 不!稳定
  • 代码太长(相比STL的sort)
  • 简单
  • 不用思考
  • 容易理解
  • 一点都不难
  • 求逆序对思想
  • 比较有用

比快排还快的桶排序

§思想

似乎有点不好说啊,那就不说了。

§分析

  • 快(时间复杂度O(n))
  • 简单
  • 容易实现
  • 代码较短
  • 不用思考
  • 容易理解
  • 常用
  • 使用有范围(数,实数,有理数,整数,非负数,不能太大)
  • 快速排序颜面扫地.(同在排序家族,抬头不见低头见的,何必呢!)

堆排序

§思想

利用堆这种数据结构所设计的一种排序算法。

§分析

  • 不稳定
  • 比较快(平均时间复杂度O(nlogn))
  • 代码太长(相比STL的sort)
  • 简单
  • 不用思考
  • 容易理解
  • 一点都不难

我们最常用的排序 迷之微笑

§实现

(§思想和§分析被§实现篡位了)

#include<algorithm>
using namespace std;
void s6o6r6t6(int a[],int f,int l)
{
    sort(a+f,a+l+1);
}

本文最有用的一段话, 快来看啊! 快来看啊! 快来看啊! 快来看啊! 快来看啊! 快来看啊! 快来看啊! 快来看啊!

本篇文章或许会出现各种各样奇葩的错误。
如果读者能理解我,请点个赞,谢谢。
如果读者不能理解我,我相信点了赞之后你还是不能理解我,为了让你养成不忘初心的好习惯,请点个赞,谢谢。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值