我个人的观点(未必正确),作为一个程序员需要对算法和数据结构具有一定理论和经验的基础。
在程序员的经典教程中很多人提到 算法+数据结构=程序设计。
如果你想要在开发这一行谋求很好的发展,这个基础是一定要打好的。本文中讲述的都是一些基础知识但是对写好程序至关重要的。
我们写程序的目的是要通过程序描述外部世界的事物,而数据结构就是对外在世界的信息方面的抽象,而算法是在数据集基础上的遍历和操作。这些东西在离散数学中都有所描述。
在面向过程的程序设计达到一定水平之后,才使构造一定复杂程度的系统成为可能。我在实际项目中看到有些程序员写超过6级的For 语句循环和结构很复杂的函数。这些都需要加强算法和基础理论的修养才能达到。
面向对象的设计思想是另外的一种设计思想但是对对象世界的规划也是建立在理论能力基础上的。
我的建议在学习数据结构和算法的时候,需要理论结合实践。有些东西看过一遍之后 觉得自己掌握了,但是如果自己没有动手写程序之前,对算法的理解还是很浅的,而且很容易忘记,另外就是很多时候对于一些算法如递归,很多和我交流的人都是看的时候明白实际上完全没有掌握。
我个人学习过程中获益最深的几个程序包含:
1、 八后问题
在一个8X8国际象棋盘上放8个王后,并且所有的王后相互不能杀(国际象棋棋子摆在方格内,王后可以杀横向和纵向和两个45度角上的所有子)。
我刚学编程的时候花了一个星期苦思冥想,当时主要是用递归后来写出来死机(哈哈)后来上课老师讲回溯方法。这里我就基础的递归算法 和八后的递归和回溯算法都写一下(我建议只要真正想搞好编程的人要把这两种方法都掌握好)
数据结构
一个 8个整形长度的数组 表示棋盘的当前状态,有些人可