废话不多说,开门见山,本文为序言,“武力高强者”请绕道,不然会浪费你们的时间和精力。
数据结构和算法是所有编程语言的灵魂,我在工作中也经常遇到需要自己去设计算法去实现相应的功能。有很多的时候,做应用层面的嵌入式时,其实很少用到高级一点的算法知识,但是不用又会遗忘,所以我思考了很久,我有必要重新学习和整理数据结构和算法。目前网上其实有很多的书籍和很多大神的详解,但是我做这个目的不是去比较,而是为了充实提升自己的能力,同时也给需要的朋友一些微薄的帮助,当然,如果我有什么错误的地方,也希望各位博友能够指出,相互学习和进步。
我其实看过不少的算法书籍和视频,但如果自己不下功夫,只是云学习,那么就不会掌握那些个技能。我曾经在ACM实验室待过很长的一段时间,虽然也已经过了很久,但是这也是经验和教训,希望大家引以为鉴。
学习数据结构和算法的过程会比较痛苦,但是收益一定是想象不到的(只要坚持下去!),我也常常对自己说:不放弃,因为我还不够强大。每个人都有自己的学习方法,所以我的方法不一定是适合你的。我个人比较“愚钝”,对很多的知识需要一段时间的适应,也喜欢钻牛角尖,但是我也不得不这样,因为学习对于我来说就是不断的证明和推翻自己的过程。
我目前由于是重新学习数据结构和算法,就得把之前所掌握的东西全部丢掉,重新散发思维去思考问题。不然我自己会受到之前知识的影响。学习数据结构和算法最重要的是需要你有足够的数学验证知识和理论知识,因为常常在一些解释不那么合理的情况下,通过数学证明的方法能够得到最终的结果。
数学上需要掌握的也比较多,比如:微积分、线性代数、概率论等等。我这次的出发点不是说以ACM为标准,我是以一个初学者的态度去学习和整理,所以如果是要参加比赛的朋友们,我这里可能不是很适合你,虽然我也会以ACM的一些题为标准进行解。我最开始学习数据结构和算法时,因为没人教,只有靠自己,学起来说实在话真的很累,所以我也想通过这种以数法会友的方式,相互借鉴和学习。
我会不定式更新博客,有时间就分享和学习我所学习到的知识和一些技巧,这次呢,还是通过C/C++语言的方式进行解释,当然有时会拿Java进行比较学习,使用的编译器我选择的是VS2017,当然也可以用codeblocks等,建议看的书籍是数据结构和算法分析C语言版本。我这不会对一些很基础的语法进行说明,我先整理一些在学习过程中会用到的一些数学知识和技巧,同时希望博友指出我的错误的地方,方便进行修改。
我不是什么大神,就是在程序界的普普通通的小学生,讲解不到的地方,还请各位见谅。路漫漫其修远兮,吾将上下而求索。之后过一段时间,我先整理一些前期需要学习的大致的内容,然后再一步步进行学习分析和分享。