【小白学算法】1. 什么是线性结构与非线性结构
话说我一个测试人员为啥要学算法呢?说白了,都是生活所迫。
现在大厂面试哪个不考点算法,如果想过关,那就得刷题,但是一个小白,直接刷题只会被困难劝退。
所以,索性就学一下算法,不说能学的多深,但是总归不至于抓瞎。
言归正传,都知道数据结构是算法的基础。也就是说,虽然你学好数据结构不一定就能做好题,但是你学不好
数据结构,一定做不好题。
数据结构可以分为2大类:线性结构与非线性结构。
一、线性结构
线性结构是最常用的数据结构,而其常见的形式有:数组、队列、链表和栈。
线性结构的特点就是:数据元素之间存在着一对一的线性关系。比如说:
有一个数组a = [1, 3, 2, 5, 6]
,于是a[3] = 5
,当数组下标为3的时候,就有一个对应的值是5。
同理,a[1] = 3
,也是这样1对1
的关系。
而在线性结构中,又存在2种不同的存储结构:顺序存储结构、链式存储结构。
-
顺序存储结构:
顺序存储结构的线性表称为顺序表,它的存储元素是连续的(内存地址连续,比如数组)。 -
链式存储结构:
链式存储结构的线性表称为链表,它的存储元素不一定是连续的,元素节点中存放数据元素以及相邻元素的地址信息,
比如,单链表、双向链表。因为地址不连续,所以可以利用碎片内存。
二、非线性结构
与线性结构相反,非线性结构就不是1对1的关系了。它包括:二维数组、多维数组、广义表、树结构、图结构。
数组相对来说还算比较简单,但是在应用中,树结构跟图结构算是用的最多的。
单从树结构与图结构,就可以延伸出很多算法。
--不要用肉体的勤奋,去掩盖思考的懒惰--