zoukankan      html  css  js  c++  java
  • 排序算法总结

    各种排序算法总结

     排序算法  插入排序  冒泡排序  选择排序  归并排序  快速排序 堆排序  计数排序  基数排序  桶排序 
    思想  构建有序序列 两两交换 每次找一个最小值 分治法思想 分治法思想 最小堆、最大堆 数字本身的属性  对数据选择多种基数  函数的映射关系、Hash 
    数据结构  数组  数组  数组  数组 不定   数组 数组 数组  数组 
    最差时间复杂度 O(n^2)   O(n^2)   O(n^2)   O(n*lgn)  O(n^2)、改进O(n*lgn)  O(n*lgn)  O(n+k)  O((n+k)*d)  O(n^2)
    最优时间复杂度  O(n)   O(n^2)、改进O(n)    O(n^2)   O(n*lgn)  O(n*lgn)  O(n*lgn)  O(n+k)  O((n+k)*d)  O(n)
    平均时间复杂度  O(n^2)   O(n^2)   O(n^2)   O(n*lgn)  O(n*lgn)  O(n*lgn)  O(n+k)  O((n+k)*d) O(n) 
    最差空间复杂度  总共 O(n) ,需要辅助空间O(1)  总共 O(n) ,需要辅助空间O(1) 总共 O(n) ,需要辅助空间O(1)  О(n) Ω(n)额外空间  总共 O(n) ,需要辅助空间O(1)  O(n+k) 额外空间,k为序列中Max-Min+1   O(n) 额外空间 (K为特征个数)  O(k) 额外空间 
    稳定性 稳定 稳定 不稳定 稳定 不稳定 不稳定 稳定 稳定  稳定
     
    空间复杂度:
    In-place sort(不占用额外内存或占用常数的内存):插入排序、选择排序、冒泡排序、堆排序、快速排序。
    Out-place sort:归并排序、计数排序、基数排序、桶排序。
     
    稳定性:
    stable sort:插入排序、冒泡排序、归并排序、计数排序、基数排序、桶排序。
    unstable sort:选择排序、快速排序、堆排序。
     
    比较排序:常见的排序算法都是比较排序。非比较排序:计数排序、基数排序和桶排序。
    计数排序:待排序的数组元素都是整数,适合数据分布集中的排序。
    基数排序:每位的排序是计数排序;桶排序:输入数组的元素都在[0,1)之间。
     
    比较排序的时间复杂度通常为O(n2)或者O(n*lgn),比较排序的时间复杂度下界就是O(n*lgn);而非比较排序的时间复杂度可以达到O(n),但是需要额外的空间开销。
  • 相关阅读:
    Linux下将pycharm图标添加至桌面
    在linux命令下如何访问一个url?
    sudo 出现unable to resolve host 解决方法
    时间处理插件moment.js
    vue视图不更新情况详解
    基于webstorm卡顿问题的2种解决方法
    Windows10内置Linux子系统
    VUE项目中使用this.$forceUpdate();解决页面v-for中修改item属性值后页面v-if不改变的问题
    vue $forceUpdate() 强制重新渲染
    Vue 实现手动刷新组件
  • 原文地址:https://www.cnblogs.com/crystalmoore/p/5933034.html
Copyright © 2011-2022 走看看