算法(第4版)-2.5 应用
2.5.1 将各种数据排序
· 交易事务
· 指针排序
· 不可变的键
· 廉价的交换
· 多种排序方法
· 多键数组
· 使用比较器实现优先队列
· 稳定性:能够保留数组中重复元素的相对位置
稳定:插入排序、归并排序
不稳定:选择排序、希尔排序、快速排序、堆排序
2.5.2 我应该使用哪种排序算法
1. 快速排序是最快的通用排序算法。
2. 将原始类型数据排序:跳过引用可以为我们节省储存所有引用所需的空间和通过引用来访问数组的成本,更不用说那些调用compareTo()和less()方法的开销了。
3. Java的系统程序员选择对原始数据类型使用(三向切分的)快速排序,对引用类型使用归并排序。
这些选择实际上也暗示着用速度和空间(对于原始数据类型)来换取稳定性(对于引用类型)。
2.5.3 问题的归约
1. 归约指的是为解决某个问题而发明的算法正好可以用来解决另一种问题。
2. 平均来说,基于切分的选择算法的运行时间是线性级别的。
2.5.4 排序应用一览
· 商业计算
· 信息搜索
· 运筹学:研究数学模型并将其应用于问题解决和决策的领域
· 事件驱动模拟
· 数值计算
· 组合搜索