zoukankan      html  css  js  c++  java
  • 算法:(一)排序

    (一)时间复杂度为O(N²),空间复杂度为O(1)的排序

    • 冒泡排序
    • 选择排序
    • 插入排序

    (二)时间复杂度为O(NlogN)的排序

    • 归并排序空间复杂度为O(N)
    • 快速排序,空间复杂度为O(logN)~O(N)
    • 堆排序,空间复杂度为O(1)
      • 经典堆排序实现使用了递归的方式(函数栈,空间复杂度为O(logN)
    • 希尔排序,空间复杂度为O(1)

    (三)时间复杂度为O(N)的排序,空间复杂度为O(M)

        不是基于比较的排序,思想来自桶排序。

    • 计数排序
    • 基数排序

    (四)稳定性的概念

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

    • 稳定的排序算法:
      • 冒泡、插入、归并、计数、基数、桶
    • 不稳定的排序算法:
      • 选择、快速、希尔、堆

    (五)补充

    ①排序算法无绝对优劣。通常不能随便说哪种排序算法好。这个和要排序的元素相关。例如对人的年龄排序或者身高排序,因为这种数据范围通常比较小,可以考虑采用计数排序。但是对于均匀分布的整数,计数排序就不合适了。除非题目特别说明,否则认为要排序的数据范围是均匀分布的。

    ②快速排序之所以叫快速排序,不代表它比堆排序和归并排序优良。在最好的情况下,它的渐进复杂度和堆排序和归并排序是相同的。只是快速排序的常量系数比较小而已。

    ③工程上的排序

    • 工程上的排序是综合排序
    • 数组较小时,插入排序。
    • 数组较大时,快速排序或其它O(NlogN)的排序
  • 相关阅读:
    使用滤镜设置透明导致 IE 6/7/8/9 解析异常
    用事实证明cssText性能高
    字符串转成数字的多种方式
    IE6/7/8/9怪异模式和IE6标准模式中多余字符Bug
    将HTMLCollection/NodeList/伪数组转换成数组
    servlet下利用jsonlib
    JavaScript中同名标识符优先级
    JavaScript继承方式(3)
    设置HTML元素的透明度
    各浏览器中定位元素遮盖其它元素差异性
  • 原文地址:https://www.cnblogs.com/M-M-Monica/p/10105560.html
Copyright © 2011-2022 走看看