[数据结构与算法]02 什么是数据结构与算法以及我该怎么学
什么是数据结构与算法呢?
当你看到这个问题的时候,你脑海中的第一反应是什么?
数据结构就是指一组数据的存储结构,算法是操作数据的一组方法.
这样的答案是不是让你觉得,我去,这么抽象,所以算法是什么,数据结构是什么?还是一脸懵逼.
小时候我的问题可多了,总是问我母上大人,妈妈这个字念什么,那个字念什么.母上大人后来被我烦的不行,索性给了我一本<新华字典>,教我怎么查,从那儿以后再也没烦过她了.
为什么要说这个事情,因为我觉得这就是一个解释什么是数据结构,什么是算法的例子.新华字典是按照字母的顺序来给汉字进行编号,那么厚的一本字典就是「汉字」的存储结构.接下来我有个字知道它的拼音,但是我不知道它念几声哇,怎么办呢?一种方法是:根据字母顺序定位,然后开始找;另外一种方法是:根据偏旁部首来找到这个字,然后再看看它在几页,定位过去.为了查找这个汉字,所采用的方法,就是常说的算法.
你有没有发现,只要说数据结构,就一定提到算法,或者提到算法的时候,就会说到数据结构.为什么呢?
因为数据结构和算法是相辅相成的,数据结构是为算法服务的,算法主要作用在特定的数据结构之上,如果单独讲,没有什么意义,或者说意义不大.
现在,我知道了学好数据结构和算法很重要了,但是我该怎么学呢?
我现在也是在摸索阶段,根据自己的经验来说说.
第一,要学会站在巨人的肩膀上.
当你打开图灵图书的时候,你会发现这么一句话「站在巨人的肩膀上」,那么好的位置,如果用来放广告,会给它带来多少的效益啊,但是编辑没有这么做,反而是放了这样一句话,说明什么?说明这句话,特别值钱.
所以能从这句话里面学到什么?
站在巨人的肩膀上,能够少走很多弯路.现在互联网这么发达,只要你想学,课程一大堆,找一个好的课程踏踏实实的从头到尾学一遍,如果你对「知识付费」不排斥的话,我推荐极客时间上的「数据结构与算法之美」这个课程,我也在学习这门课程,给我的帮助很大.如果对付费比较排斥的话,我觉得大学计算机课程上的「数据结构导论」这本书吃透也差不多,不过我看的那个版本的是 C 语言的,对新手可能不太友好.
第二,就是要多写,多练.
展示你实力的从来都是 no BB , show code .
想要学好算法也是这样,别说太多,干就完了.
一定要多写.前一段时间为了准备考试,把课本上的例子,用各种算法都手写了一遍,冒泡的话,这些顺序是怎么动的,快速排序的话又是如何变化的.
我觉得一定要用手写写画画,现在我对于算法思想有了一点儿感受.如果没有这个量,我觉得知道快速排序为什么快这一点是不会有很深刻的体会的.
多写,多练,没啥捷径.
最后一点就是心态的问题了.
很多人,也包括我自己,常常是想着今天付出了,明天就要看到回报.
明明知道一口吃不成胖子,可是真的在生活中,却总是想着这样的事情.
心静,心静,让心沉淀下来.
感谢您的阅读~