2.6 排序算法

年龄越大,程序写得越多,时间越长,就越觉得算法重要。从长远看,基础能力决定了你到底能走多远。我们不是编写一两年程序就完事了,从毕业时算起,我们可能要编写20~30年的程序,在这段漫长的过程中,最终比的不是谁熟悉API多,也不是谁用插件用得有多熟练,更不是谁更熟悉某软件,而是比谁的基础能力强,谁的算法效率高,谁对底层原理更加熟知于心,谁能够解决更复杂的系统和需求问题。

在程序员的生涯中,算法能力是基础能力的一种,很多时候,程序的好坏,一方面是看编写程序的经验,另一方面是看对计算机原理的理解程度,还有一方面是看对算法的理解和运用熟练程度。

拥有算法能力不仅是指表面的算法熟知度,也是一种追求卓越的精神,即对自己经手的程序效率负责的精神。在平时的工作中,某一处的算法有可能运用得很好,其他地方却依然用了很烂的算法或者运用得不太妥当,对于整体程序的效率来说,这依然很糟糕。因此在平时的编程习惯中,做到时刻关注算法效率是区分中、高水平的一个关键点。

在平时的编程工作中,排序算法和搜索算法最常用。毫不夸张地说,一个项目中有90%的算法都是排序算法和搜索算法,如果我们把这90%的算法提升到一个很高效的程度,那么剩下10%的算法处理起来压力会小很多。本节将介绍排序的各种算法,以及算法运用到具体项目中的优劣情况。