less than 1 minute read

一些东西还是用中文总结一下,然后看看有没有可能再用英语写,叹气自己的英语水平。

排序

各种排序在不同情形下的使用场景.

选择

特点

  • 运行时间和原数组数据无关
  • 数据移动是所有排序中最少的
  • 交换次数和数组的大小成线性相关

插入

特点

  • 所需时间与原始数据有关, 元数据的随机性决定了时间所需的长短

适用场景

  • 非随机数组很有效
  • 部分有序的数据

希尔

特点

  • 插入排序的改进版
  • 需要确定每个子数组的分段

适用场景

  • 可以适用于大型数组, 表现都比较好

归并

是分治的排序算法

特点

  • 保证长度为N的数组, 需要花费的时间与NlogN成正比
  • 所需要的额外空间和N成正比
  • 当数组长度为2的幂时, 2中方式所用的比较方式和访问数组的次数相同, 但是顺序不同.
  • 当数组长度 不是 为2的幂时, 2种比较方式和访问数组的次数有所不同,

自顶向下

自底向上

特点

  • 比较适合用链表组织的数据

快速

是分治的排序算法

定理和命题