作为一个Java程序员,我为何要学习数据结构和算法呢?的确现在Java语言已经很强大,它对数组、链表、堆、队列等一系列数据结构进行了封装,使其应用起来方便快捷。更何况现在无论是前端还是后端都有大量的控件可用。数据结构和算法这些底层的东西,相对来说显得并不是那么重要了。
但是一个只会使用代码的程序员未来又有多少成长的可能呢?程序对于我们来说到底有什么意义呢?在我看来,程序是为了解决现实中存在的,我们无法用传统的方法解决的问题。说到底,编程只是工具,能够解决实际的问题才是一本万利。
举个例子,我们应该都知道抛硬币的实验,如果让你抛10次硬币,并记录正反面出现的概率,这个很简单,每个人都能做到。但是让你抛1千次、1万次甚至是10万次呢。这个就很困难。但是如果让程序员写个程序来模拟这个实验,那么分分钟就可以实现。
由此可见程序模拟现实的能力和效率是多么的高。但是写出程序的前提是要将现实问题的条件虚拟化,也就是说如何去模拟现实,如何去存储现实中的数据,如何去写算法,并努力提高算法的效率才是程序实现的前提。由此可见数据结构和算法的重要性。
数据结构是指数据在计算机内存空间中或磁盘中的组织形式。数据结构可分为通用数据结构、专用数据结构、图和外部存储。通用数据结构包括数组、链表、树及哈希表。专用数据结构包括栈、队列、优先级队列。
如果想在计算机里存储类似人事记录、存货记录、合同表等数据则只需要通用数据结构即可。如人事记录,可能需要存储某个人的工号、姓名、性别、职位、简历等诸多信息。那么可以把这些信息保存到数组中,通过数组的索引便可以操作这些保存在内存中的数据。当然该用数组还是链表,这要视情况而定,在解决问题的同时要清楚不同数据结构的特性才能够做到。
而算法则是实现问题的清晰准确的代码指令。有了算法代码才真正拥有了灵魂,才能够高效而迅速的解决现实生活中各种各样的问题。学好算法的关键是尽量写出简洁易读并且时间和空间复杂度尽量小的算法。算法是一个程序员的造诣,是一种需要不断练习的技巧,也是一种艺术。