一般来说,数据结构和算法这本书上提到的任何算法/数据结构,你都不会有机会重新实现一次。因为,早有就各种各样的库,对外提供了工业级的、充分泛化的实现,只需拿来用就是了。重写的话,一个代码质量/执行速度,显然都极难超过经过千锤百炼的、在无数项目中经过充分测试的库实现;另一个,书上都是为了教学而做的简化实现,实际使用中,需要对算法做一定的泛化。(比如,c的qsort库函数,只要保证数据是以指针数组索引的、对自定义数据须传入比较大小的功能函数,那么任何数据都可以用这个qsort算法排序;C++里面呢,则是和容器、迭代器之类东西结合通盘考虑的,可泛用于任何符合规范的容器和原生数据类型。而课本上的实现,仅能支持数组中的整数。想做到工业水平,没有足够的经验是不可能的。)但,另一方面,所有这些算法/数据结构的设计思路,却会贯穿于绝大部分项目之中。比如说,简单的冒泡算法,它是不是只是“多次扫描一个数组,交换遇到的每一对相邻的、顺序反了的数字;当不再发生交换时,数组已完成排序”甚至”好不容易才死记硬背下来的一段代码“?如果你只学会了这个,那么,你真就完全白学了。作为一个表现一般的排序算法,冒泡排序本身出场率就不高;何况还有各种提供了泛化的sort算法的库:如果仅仅记下了这个,那么你一辈子都不会遇到”必须重写冒泡算法“的场合。
领取专属 10元无门槛券
私享最新 技术干货