编程学习笔记
一些东西还是用中文总结一下,然后看看有没有可能再用英语写,叹气自己的英语水平。
排序
各种排序在不同情形下的使用场景.
选择
特点
- 运行时间和原数组数据无关
- 数据移动是所有排序中最少的
- 交换次数和数组的大小成线性相关
插入
特点
- 所需时间与原始数据有关, 元数据的随机性决定了时间所需的长短
适用场景
- 非随机数组很有效
- 部分有序的数据
希尔
特点
- 插入排序的改进版
- 需要确定每个子数组的分段
适用场景
- 可以适用于大型数组, 表现都比较好
归并
是分治的排序算法
特点
- 保证长度为N的数组, 需要花费的时间与NlogN成正比
- 所需要的额外空间和N成正比
- 当数组长度为2的幂时, 2中方式所用的比较方式和访问数组的次数相同, 但是顺序不同.
- 当数组长度 不是 为2的幂时, 2种比较方式和访问数组的次数有所不同,
自顶向下
自底向上
特点
- 比较适合用链表组织的数据
快速
是分治的排序算法