数据结构与算法的个人学习经验小结(总)

前言

  终于决定写下个人的第一篇技术博客了。
  既能对过去所学有个复习和总结,又能在某种程度上展示一下自己,或许还能对其他人有些许的帮助,在这些好处的诱惑下,牺牲点时间用来码字还是值得的。
  #技术类的博客就在本平台了,其他题材的文章,可以关注一下我的简书账号:嚼牛牡丹

正文

  首先要说的是,鄙人目前仅仅是初出茅庐,因此有些错误的理解和论述希望看官能够予以包容,如果能不吝赐教指出错误,鄙人将感激不尽。
  先从最近重点学习的数据结构和算法写起吧。在这里,我不打算贴出相关的概念和学术型的定义,私以为如果把编程比喻为盖房子的话,那么数据结构可以认为是建筑材料,而算法可以认为是具体的盖房子的方法,两者是互相依存的,算法需要结合数据结构去设计,数据结构则是算法的基本处理对象。
  就拿最直接的数据排序简单说明一下两者的关系,对一组数据进行排序,那么这组数据其实就是算法要处理的对象,无论是简单些的冒泡排序、插入排序还是复杂些的归并排序、快速排序都是在对这组数据进行处理。同样是这组数据,如果在计算机中存储的方式不同,那么针对这组数据的处理就是有区别的,即使是同样的算法针对不同的数据存储方式也需要做出对应的调整。事实上,有些算法必须依托于特定的数据结构才能实现。
  一般来说,学习编程首先是学习一门编程语言,然后利用基本的解决问题的逻辑去写一些简单的程序,再接着学习基础的数据结构和算法去加深对编程的理解,同时解决一些相对复杂的问题,这个时候解决问题的逻辑已经并非那么直观和暴力了,再然后,是学习更加复杂的数据结构运用和更加复杂的算法思想,这个时候有些人跪倒在更加抽象的逻辑墙之外,有些人迈了进去,开启了成神之路。很遗憾,我个人目前好像还没到这堵墙呢 罒ω罒。
  从我个人的经验看,无论学习什么尽量要递进式地学习,因为跳跃式的学习很容易留下缺口,虽然后者在某些情况下可以加快进度,但是从长远看,递进式地学习其速度一般不会降得很快,能够稳步推进。你可以试一下在线性表还不会的情况下,直接挑战一下图论,我相信你在学习图论的时候还是会忍不住翻到前面看线性表的……另外还有两个需要重点提一下的点,首先,在学习数据结构和算法时,必须对自己所用的编程语言非常熟悉。俗话说,工欲善其事,必先利其器,工具用不好是很麻烦的,你会发现,明明脑袋里有想法,但是却无法用编程语言描述出来。其次,理论实践一定要互相印证,想要升级段位,必须保证足够的代码量。
  我相信肯定有很多人跟我一样,经历过或正在经历这样一个阶段,就是理论看得懂,别人的代码也看得懂,但需要自己亲自操刀上手的时候,就会有一种无从着手的感觉,始终觉得自己差了点东西。现在我可以告诉你你差的东西是什么——火候。试着撇开别人的代码,自己去理思路,然后编写程序解决一些问题吧!切忌眼高手低,不肯码代码,当你代码量够的时候,差不多也就是你打通任督二脉的时候了。
  虽然博主现在依旧实力低微,但是博主觉得自己已经在走向高手的道路上了。也希望与我同行的你们早日修成正果。
  共勉!

接下来

  接下来就是展现真正技术的时候了,将按照自己的学习顺序,总结一下每个部分的学习成果和依旧存在的问题和疑惑。

没有更多推荐了,返回首页