【数据结构】第8章 排序

88 阅读1分钟

提示
仅供个人回顾参考

基本概念

  • 排序
  • 输入
  • 输出
  • 算法的稳定性

插入排序

  • 定义
    • 待排序关键字插入到已排好序的子序列中
    • 引申: 直接插入排序, 折半插入排序和希尔排序
  • 直接插入排序
    • 算法分析
      • 时间复杂度: O(n2)O(n^2)
      • 稳定性: 稳定
      • 适应性: 顺序存储和链式存储
  • 折半插入排序
    • 算法分析
      • 时间复杂度: O(n2)O(n^2)
      • 稳定性: 稳定
  • 希尔排序
    • 算法分析
      • 空间复杂度: O(1)O(1)
      • 时间复杂度: 数学上难题, 最坏情况下O(n2)O(n^2)

交换排序

  • 冒泡排序
    • 算法分析
      • 时间复杂度:O(n2)O(n^2)
      • 稳定性: 稳定
  • 快速排序
    • 内部排序中平均性能最优的排序算法
    • 提高效率
      • 枢轴元素选取尽量选中分的元素
      • 或者随机选
      • 尽量两个子问题平衡划分
    • 算法分析
      • 时间复杂度:最坏情况下O(n2)O(n^2)
      • 稳定性: 不稳定

归并排序

  • 算法分析
    • 空间效率: O(n)O(n)
    • 时间效率: O(nlog2n)O(nlog_2n)
    • 稳定性: 2路归并排序稳定

基数排序

  • 最高位优先MSD
  • 最低位优先LSD

内部排序算法应用

image.png

外部排序

  • 定义

    • 大文件多次内存与外存交换数据,排序
  • 多路归并与败者树

  • 置换-选择排序

  • 最佳归并树