LeetCode基础-排序

来源:互联网 发布:甄子丹功夫怎么样知乎 编辑:程序博客网 时间:2024/05/22 15:09

排序是最基本也是最常用的算法之一。

常用的几个排序算法是:

  • 排序
    – 冒泡排序
    – 插入排序
    – 选择排序
    – 合并排序
    – 堆排序
    – 快速排序

这些排序算法的基本性质和特点如下:

冒泡排序,插入排序,选择排序的平均时间复杂度都是:O(n2)
合并排序,堆排序,快速排序的平均时间复杂度都是:O(n*log2n)

冒泡排序,插入排序,选择排序的空间复杂度都是:O(1)
合并排序的空间复杂度是:O(n),(占用空间较多)
堆排序的空间复杂度是:O(1)
快速排序的空间复杂度是:O(log2n)~O(n)

冒泡排序,插入排序 是稳定的排序算法。
选择排序 是不稳定的排序算法。
堆排序,快速排序 是不稳定的排序算法。
堆排序 是不稳定的排序算法。
注:是否稳定指的是排序过程中重复值的相对位置是否改变。

应用题:

  • 调度,
  • 负载均衡,
  • 逆域名排序,
  • 垃圾邮件大战
  • 公正的选举,
  • 计算Kendall tau 距离,
  • 空闲时间,
  • 多维排序,
  • 股票交易,
  • 简单多边形,
  • 文件名排序,
原创粉丝点击