在前言中已经对知识体系进行了梳理,主要分为问题定义、算法与数据结构、系统平台API、编程语言实现、代码设计、测试验证等等。目前集中精力编写算法与数据结构部分,这可能也是最艰难的一部分,之后再考虑补充其他部分。
对于这一部分的内容编排,主要以《算法设计与分析基础》、《算法》以及LeetCode算法题中的问题分类为横向,以《算法设计与分析基础》中罗列的经典设计技巧为纵向,贯穿每一小节。因为传统算法书籍的结构经常是为了讲算法而讲,目录内容分类都很死板。而我想要的是解决这一类问题有哪些算法?都是用什么技巧和思路设计的?
《程序员修炼之路-(1)基础(上):算法设计》
《程序员修炼之路-(3)排序(中):合并和快速排序》
《程序员修炼之路-(4)搜索(上):线性与二分查找》
《程序员修炼之路-(4)搜索(中):二叉查找树》
《程序员修炼之路-(4)搜索(下):哈希表》
非常重要,单列一章。图算法也同样重要,但一来可以归入排序或搜索中,二来面试时考的不多,就不单独列了。
《如何解题》、穷解、减治、分治、动态规划、贪心。
计算机架构(计算机组成原理、汇编语言等)、操作系统(Linux和Windows常用系统API等)、编译链接(编译和链接的原理)。
C/C++/Java等主流语言,如何实现我们的设计,包括语言语法、内存分配、封装抽象、分包引库等小细节。
抽象层次定义、23种设计模式、重构改善设计。
单元测试。
原文:http://blog.csdn.net/dc_726/article/details/44785453