• 十个经典排序算法(时间复杂度,空间复杂度,稳定性,动画演示思想)


    比较类排序:

    类型 时间复杂度 空间复杂度
    冒泡  O(n^2) O(1)
    选择  O(n^2) O(1)
    插入  O(n^2) O(1)
    归并 O(n*logn) O(N)
    快速 O(n*logn) O(logN)~O(N)
    O(n*logn) O(1)
    希尔 O(n*logn) O(1)

    非比较类排序:

    类型 时间复杂度 空间复杂度
    计数排序 O(N) O(N)
    基数排序 O(N) O(N)
    桶排序 O(N) O(N)

     

    稳定性的概念:

      假定待排序的记录序列中,存在多个具有相同的关键字的记录,若经过排序,这些记录的相对次序保存不变,称这种排序算法是稳定的,否则称为不稳定的。

    稳定的排序算法:

    冒泡  插入  归并  计数  基数  桶

    不稳定的排序算法:

    选择  快速  希尔  堆

    冒泡排序

    选择排序

     

    插入排序

    归并排序

    快速排序

    • 默认选择第一个数为基数
    • 实现比基数小的数放在基数左边,比基数大的数放在基数右边
    • 设置左右两个指标,不断向中间靠,左边寻找比基数大的数,标记,右边寻找比基数小的数,标记,交换两个标记位置的数
    • 直到两个指标相遇,停止移动指标,交换基数位和左指标位置的数
    • 继续重复以上步骤,对两个区别的数进行同等操作

     

    希尔排序

    堆排序:

    • 建成大根堆
    • 堆顶元素和最后一个元素交换
    • 剔除最后一个元素
    • 变成大根堆,重复2,3步骤

    计数排序

    桶排序(计数排序升级版)

    • 设置一个定量的数组当作空桶;
    • 遍历输入数据,并且把数据一个一个放到对应的桶里去;
    • 对每个不是空的桶进行排序;
    • 从不是空的桶里把排好序的数据拼接起来。 

    基数排序

  • 相关阅读:
    通过PowerShell发送TCP请求
    移动端h5全屏body背景图底部未到底bug
    前端开发工具——utils
    微信公众号网页开发——授权登录,js安全域名,jssdk使用
    移动端开发——移动端遮罩层滚动防穿透body解决方案
    js实现cookie有效期至当次日凌晨
    js获取数组中任意一项
    mysql连接错误,error1251解决方式
    Vue packages version mismatch
    js实现拖动效果
  • 原文地址:https://www.cnblogs.com/huozhonghun/p/10596650.html
Copyright © 2020-2023  润新知