zoukankan      html  css  js  c++  java
  • #排序算法#【6】排序算法总结

      前面几篇博客分别罗列和总结了近期学习的几种排序算法,今天总结一下。

    1. #排序算法#【1】概述、冒泡排序、选择排序
    2. #排序算法#【2】直接插入排序、希尔排序
    3. #排序算法#【3】堆排序
    4. #排序算法#【4】快速排序
    5. #排序算法#【5】合并排序

      排序算法有很多,在实际使用的时候需要根据情况选择合适的相应算法。每种算法都有其优缺点,判断一个算法的优劣,可以参考的标准:

    1. 计算的复杂度:依据排序数据量的大小(n),好的表现是O(nlogn),最差表现为O(n2)
    2. 系统资源的使用:包括计算机内存以及其他资源的使用,主要考虑计算机辅助内存的多少
    3. 稳定度

    几种算法的复杂度:

    1. 冒泡排序法:平均速度和最坏情况下的速度都为O(n2)
    2. 快速排序法:平均速度为O(nlogn),比冒泡排序法快,单在最坏的情况下与冒泡排序法相同,为O(n2)
    3. 简单选择排序法,平均速度和最坏情况下的速度都为O(n2)
    4. 堆排序法:平均速度和最坏情况下的速度都为O(nlogn)
    5. 希尔排序法:平均速度为O(n3/2),最坏情况下速度为O(n2)
    6. 合并排序法:平均速度和最坏情况下的速度都为O(nlogn)

    几种算法的稳定度:

    • 稳定的算法:
      • 冒泡排序法
      • 插入排序法
      • 合并排序法
    • 不稳定的算法:.
      • 选择排序法
      • 希尔排序法
      • 堆排序法
      • 快速排序法

    选择排序算法的几个参考:

    1. 当数据为正序时,使用直接插入排序法、冒泡排序法和快速排序法
    2. 当n值比较小(如n<=50),可采用直接插入排序法或选择排序法。当记录规模比较小时直接插入排序较好;否则因为直接选择移动的记录数多于直接插入,应选择直接选择排序
    3. 当n值比较大时,则应采用时间复杂度为O(nlogn)的排序算法,如快速排序、堆排序或合并排序
    4. 当待排序的关键字是随机分布时,快速排序的平均时间最短
    5. 若要求排序稳定,则可选择合并排序
  • 相关阅读:
    数组和函数
    循环练习题
    JavaScript 循环
    函数
    JavaScript简介2
    JS练习题1
    JavaScript简介
    css样式综合
    格式与布局
    列表和方块
  • 原文地址:https://www.cnblogs.com/fanchangfa/p/3857701.html
Copyright © 2011-2022 走看看