zoukankan      html  css  js  c++  java
  • 排序算法复杂度/稳定性总结

    类别 排序法 时间复杂度 空间复杂度 稳定性 备注
    平均 最差 最好
    插入排序 直接插入 O(n^2) O(n^2) O(n) O(1) 稳定  
    Shell   O(n^[1~2]) O(n^1.25)? O(1) 不稳定  
    选择排序 直接选择 O(n^2) O(n^2) O(n^2) O(1) 不稳定  
    堆排序 O(nlogn) O(nlogn) O(nlogn) O(1) 不稳定  
    交换排序 冒泡排序 O(n^2) O(n^2) O(n) O(1) 稳定  
    快速排序 O(nlogn) O(n^2) O(nlogn) O(logn)~O(n) 不稳定  
    归并排序 O(nlogn) O(nlogn) O(nlogn) O(n) 稳定  
    基数排序 O(d(n+k)) O(d(n+k)) O(d(n+k)) O(n+k)  稳定  

    1 直接插入:按次序将下一个元素从后向前比较,插入到第一个有序位置。

    2 shell sort:先分组,每组下标距离相等,进行组内直接插入排序。重复上一步骤,每次距离(按某种规则,但相邻值不为倍数为佳)递减直到1。最后一次即对一个基本有序序列进行直接插入排序。

    3 直接选择排序:从待排序列中选择最小(大)与第一个(最后一个)元素交换次序。

    4 堆排序:最大或最小堆,父结点元素大于或者小于所以子结点元素。以最大堆为例,先建立堆,再将最大值与最后一个元素交换,调整前面n-1个元素形成的堆为最大堆。

    5 冒泡排序:依次两两比较并交换次序。

    6 快速排序:将小于和大于某一旗语的元素分列两边,再对两部分进行快速排序。

    7 归并排序:对左右两个子序列进行归并再合并。

    8 基数排序:按位数排序,最小位到最大位。

  • 相关阅读:
    thinkphp3.2生成二维码
    php实现图片下载
    yii2.0 Activeform表单部分组件使用方法
    Yii2美化confirm
    Yii2学习笔记之场景
    tp5页面输出时,搜索后跳转下一页的处理
    php页面输出时,js设置input框的选中值
    mac中使用rz,sz上传文件
    golang的命令行程序开发
    Sring MVC基于Java Config方式配置Mybatis, 无XML
  • 原文地址:https://www.cnblogs.com/justinh/p/6514826.html
Copyright © 2011-2022 走看看