对于算法与数据结构的理解(一):初步认识

说在前面的话:这系列的心得是在B站看小甲鱼老师的教学视频而做出来的并且会加入自己的理解。网址:(https://www.bilibili.com/video/av21828275)

作为一名程序猿,除了学会基本的编程语法和函数之外,还需要了解算法和数据结构。如果说编程语言是程序猿的武器,那么算法就是程序猿的独门内功了。一个好的算法可以看出一个程序猿的水平高低了。所以如果要提高自己的代码的水平的话算法是绕不开的。

(PS:本人也是小白,也是刚开始学,写博客除了记录自己的心得还有就是可以多督促自己,也希望大佬多给些好的意见)

既然要编写程序,那么就要设计这个程序,那么,一般我们会考虑这个程序要用做什么用途或者要解决什么问题。那么,在写每一段代码和程序都是要进行思考,考虑如何解决问题,然后再把这个思路转化为编程思维,这就是算法。通俗来说就是解决问题的思路。就比如我们在玩明日方舟(目前很火的塔防游戏)的时候,我们会考虑如何才不能漏怪,刚开始我们一般是尽量安置战力高的干员上场,但是对于一些大神来说,他们会尝试更极限的玩法,比如安置低星干员或者低等级的干员。这时候就会出现很多种思路了,一个问题多种解题思路,这也反应了算法的一个特点:灵活多变。那么,我们借此来说说算法的几个基本特点吧。

第一点,输入。第二点,输出。第三点,有穷性。第四点,可行性。第五点,确定性。

第一点,第二点很好理解。但是有穷性是什么意思呢?有穷性就是代码会有一个尽头,不会无穷无尽的执行下去,借用小甲鱼老师的一句话就是:永远追不到的女孩为什么还要去追呢?(幽默而又生动形象),第四点就是代码没有语法错误,第五点就是每一段代码必须是唯一性的,也就是不会产生歧义。

说完算法,接下来就是数据结构了。什么是数据结构呢?既然是结构了,那么必然会存在结构里的单元——数据。这时,我们可以联想一些生态系统,系统里面的每一个生物之间的相互关系而形成来多姿多彩的自然界,那么数据结构也是这样的,数据结构就是研究数据之间的相互关系。数据结构又分为逻辑结构和物理结构。逻辑结构的含义是:研究数据对象中数据元素之间的相互关系,逻辑结构又可以分为:集合结构,线性结构,树形结构,图形结构。接下来,我会尽量根据我的理解来讲述每一种结构。

集合结构:如同集合一样,只是因为一种共同的关系而集合在一起,除此之外并无其他关系。

线性结构:犹如一条直线一样,直来直去,一对一的关系。

树形结构:树杈一般,从一点不断分支的关系,有层次感。如金字塔。

图形结构:这个的话,还是直接引用小甲鱼老师的话吧,就是对多对的关系,犹如人与人的关系一样,我可以通过这个人可以了解到另一个人甚至可以知道美国总统。

物理结构的含义是:研究如何将数据元素存储到在计算机的储存器。

物理结构可以分为:顺序结构和链式结构。

顺序结构:指将数据元素按照一定顺序存进存储。这一类结构可以放映出逻辑结构。

链式结构:指将数据元素存储在任意的存储单元里。这类结构往往是不能体现出逻辑结构的,但是,它们可以通过第一个元素从而知道另一个元素,他们之间使用指针作为链节将其链接起来,还是引用小甲鱼老师的话:就像看病号一样,你不用排队,只需要知道你的号码即可,只要叫到号码你能及时来到就行,无需排队,而指针就是这个呼叫号码。

说在最后的话:第一次学习编程,第一次学习算法和数据结构,很多都是第一次,存在很多的幼稚之处,还是希望大佬可以进行指正。

你可能感兴趣的:(笔记)