2.5 应用

一 将各种数据排序

1.1 交易事务

商业数据处理

1.2 指针排序

C和C++中,需要明确地指出操作的是数据还是指向数据的指针,而在Java中,指针操作是隐式的。除了原始数据类型之外,我们操作的总是数据的引用(指针)。

1.3 不可变的键

例String、Integer、Double和File都是不可变的。

1.4 廉价的交换


1.5 多种排序方法

Java的Comparator接口允许我们在一个类中实现多种排序方法。

1.6 多键数组

Comparator接口

1.7 使用比较器实现优先队列


1.8 稳定性

稳定的(插入排序和归并排序)

不稳定(选择排序、希尔排序、快速排序和堆排序)

有很多办法能够将任意排序算法变成稳定的。

有时候稳定性没有必要,而且维持稳定性需要用大量额外的时间和空间。


二 我应该使用哪种排序算法



如果稳定性很重要而空间又不是问题,归并排序可能是最好的。

2.1 将原始类型数据排序

一些性能优先的应用可能是将数字排序,因此更合理的做法是跳过引用直接将原始数据类型的数据排序。

2.2 Java系统库的排序算法

java.util.Arrays.sort()



三 问题的归约

3.1 找出重复元素

3.2 排名

3.3 优先队列


3.4 中位数与顺序统计

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 一. 写在前面 要学习算法,“排序”是一个回避不了的重要话题,在分析完并查集算法和常用数据结构之后,今天我们终于可...
    Leesper阅读 2,571评论 0 40
  • 从三月份找实习到现在,面了一些公司,挂了不少,但最终还是拿到小米、百度、阿里、京东、新浪、CVTE、乐视家的研发岗...
    时芥蓝阅读 42,425评论 11 349
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 174,852评论 25 709
  • 四. 走向世界之巅——快速排序 你可能会以为归并排序是最强的算法了,其实不然。回想一下,归并的时间效率虽然高,但空...
    Leesper阅读 1,817评论 9 7
  • (一) 下班前2分钟,喊了快车。六点下班就奔向等候地等待。电话响起,“这儿,你对面!”“喔,好的。”过了马路,拉开...
    葱葱_阅读 525评论 15 6