2.5 应用
Robert Sedgewick Kevin Wayne
排序算法和优先队列在许多场景中有着广泛的应用。本节中我们将简要地浏览一遍这些应用,研究如何能让我们已经学习过的高效算法在这些应用中大展身手,然后讨论一下应该如何使用我们的排序和优先队列的代码。
排序如此有用的一个主要原因是,在一个有序的数组中查找一个元素要比在一个无序的数组中查找简单得多。人们用了一个多世纪发现在一本按姓氏排序的电话黄页中查找某个人的电话号码最容易。现在,数字音乐作家们将歌曲文件按照作家名或是歌曲名排序,搜索引擎按照搜索结果的重要性的高低显示结果,电子表格按照某一列的排序结果显示所有栏,矩阵处理工具将一个对称矩阵的真实特征值按照降序排列,等等。只要队列是有序的,很多其他任务也更容易完成,比如在本书最后的有序索引中查找某项,或是从一列长长的邮件列表或者投票人列表或者网站列表中删去重复项,或是在统计学计算中剔除异常值、查找中位数或者计算比例。
在许多看似无关的领域中,排序其实仍然是一个重要的子问题。数据压缩、计算机图形学、计算生物学、供应链管理、组合优化、社会选择和投票等,不一而足。我们在本章中学习的算法也在开发本书其他章节的强大算法的过程中起到了关键作用。
通用排序算法是最重要的,因此我们首先会考虑一些在构建适用于多种情况的排序算法时需要注意的实际问题。虽然部分话题只适用于 Java,但每个问题都仍然是所有系统需要解决的。
公开
同步至部落
取消
完成
0/2000
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
![](https://static001.geekbang.org/resource/image/d0/e4/d0880927e2a522a038be2d04bf19dfe4.png)
本文深入介绍了排序算法和优先队列在各种领域中的广泛应用,包括电话黄页、数字音乐、搜索引擎、电子表格、矩阵处理工具、数据压缩、计算机图形学、计算生物学、供应链管理、组合优化、社会选择和投票等领域。文章重点讨论了排序算法的实际问题和应用,并展示了如何使用Java的排序和优先队列的代码。此外,还介绍了排序对象的实现、指针排序、不可变的键、廉价的交换、多种排序方法和多键数组等相关问题。通过实例展示了如何利用Java的回调机制和Comparable接口实现对不同数据类型的排序,以及如何在商业数据处理中应用排序算法。文章还强调了排序算法的思想虽然简单,但在实际应用中具有广泛的适用性。另外,还介绍了使用比较器实现优先队列的灵活性,并讨论了排序算法的稳定性。最后,文章总结了各种排序算法的性能特点,为读者提供了选择合适排序算法的参考。文章内容丰富,涵盖了排序算法在不同领域的应用和实际问题的解决方法,对读者了解排序算法的原理和应用具有重要参考价值。
仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《算法(第 4 版)》
《算法(第 4 版)》
立即购买
登录 后留言
精选留言
由作者筛选后的优质留言将会公开显示,欢迎踊跃留言。
收起评论