zoukankan      html  css  js  c++  java
  • 算法笔记--八个常见排序算法总结


    一、 分类描述

    1. 插入排序

              直接插入排序:算法简单,稳定,适用于数据量小的情况

             希尔排序:直接插入排序的改进版,不稳定,对于待排序序列的不同情况效率相近

    2. 交换排序

              冒泡排序:算法简单,稳定,在数据基本有序的情况下效率较高

             快速排序:算法效率高,不稳定,需要额外的辅助空间

    3. 选择排序

             直接选择排序:任何情况时间复杂度均为O(n^2),不稳定,其优势在于交换次数少

             堆排序:不稳定,对序列的原始顺序不敏感,适用于数据量大的情况

    4. 归并排序

              分治策略,稳定,适用于待排序列整体无序、部分有序的情况,需要额外的辅助空间

    5. 基数排序

              稳定;适用范围有限;当数据位数较小时,时间复杂度近似为O(n),效率高于其它的稳定性排序算法

    二、总结比较表

    类别

    排序方法

    时间复杂度

    空间复杂度

    稳定性

    复杂性

    最好

    最坏

    平均

    插入排序

    直接插入

    O(n)

    O(n^2)

    O(n^2)

    O(1)

    O

    简单

    希尔排序

    O(n^1.3)

    O(n^2)

    O(n^1.x)

    O(1)

    X

    较复杂

    交换排序

    冒泡排序

    O(n)

    O(n^2)

    O(n^2)

    O(1)

    O

    简单

    快速排序

    O(nlogn)

    O(n^2)

    O(nlogn)

    O(logn)

    X

    较复杂

    选择排序

    直接选择

    O(n^2)

    O(n^2)

    O(n^2)

    O(1)

    X

    简单

    堆排序

    O(nlogn)

    O(nlogn)

    O(nlogn)

    O(1)

    X

    较复杂

    归并排序

    O(nlogn)

    O(nlogn)

    O(nlogn)

    O(n)

    O

    较复杂

    基数排序

    O(d(n+r))

    O(d(n+r))

    O(d(n+r))

    O(n+r)

    O

    较复杂


  • 相关阅读:
    mysql关联更新like,CONCAT,Length 函数使用
    泛型类
    libwebp 解码 webp格式的图片或者动画【源码】
    windwos自带的 一个xml库 MSXML 兼容宽字符
    使用华为云的arm搭建gogs
    centos7 arm mysql 安装
    关于脱壳的一些笔记
    关于OD调试的一些笔记
    关于对《汇编语言》第3版 作者:王爽的阅读总结
    使用Proxifier + Fiddler 抓任何包
  • 原文地址:https://www.cnblogs.com/ltxdzh/p/3960141.html
Copyright © 2011-2022 走看看