排序是编程的基本问题,大家基本都学过,但是大部分程序员其实并没有写出过任何一个正确的排序算法,因为考试的时候写得意思有了就行了,工作中又是直接用库,不用自己写。
这真的没所谓的,毕竟,自己写出来的一般也没有库写得好。
一般我们应用排序和查找算法,知道二分查找快就行了,所以只要使用支持二分查找的数据结构就行了。库里面有支持哈希的数据结构,也可以用用。
有些情形复杂些,确实超越了直接用库的层面,需要额外考虑一些因素。
比如数据量太大,排序很慢,我们会考虑改进算法,把字符串变成整数(这是字符串的弱点),或者提前排好序(这增加了系统复杂性)。查找慢可以考虑逐字节索引查找表(以空间换时间)。
如果内存不足呢?分几部分分别处理,然后合并结果。这也是教科书上的东西,不过我没有实践过,我遇到的情形都是内存足够时间不足。
如果内存不足又要全部在内存里处理呢?没人那么不讲理的。除非用户说“别人怎么做到的?”,那还是水平问题。
(这里是结束)