【小白學算法】1. 什麼是線性結構與非線性結構

話說我一個測試人員爲啥要學算法呢?說白了,都是生活所迫。
如今大廠面試哪一個不考點算法,若是想過關,那就得刷題,可是一個小白,直接刷題只會被困難勸退。
因此,索性就學一下算法,不說能學的多深,可是總歸不至於抓瞎。面試

言歸正傳,都知道數據結構是算法的基礎。也就是說,雖然你學好數據結構不必定就能作好題,可是你學很差
數據結構,必定作很差題。算法

數據結構能夠分爲2大類:線性結構與非線性結構數組

1、線性結構

線性結構是最經常使用的數據結構,而其常見的形式有:數組、隊列、鏈表和棧。數據結構

線性結構的特色就是:數據元素之間存在着一對一的線性關係。好比說:
有一個數組a = [1, 3, 2, 5, 6],因而a[3] = 5,當數組下標爲3的時候,就有一個對應的值是5。
同理,a[1] = 3,也是這樣1對1的關係。測試

而在線性結構中,又存在2種不一樣的存儲結構:順序存儲結構、鏈式存儲結構code

  • 順序存儲結構:
    順序存儲結構的線性表稱爲順序表,它的存儲元素是連續的(內存地址連續,好比數組)。隊列

  • 鏈式存儲結構:
    鏈式存儲結構的線性表稱爲鏈表,它的存儲元素不必定是連續的,元素節點中存放數據元素以及相鄰元素的地址信息,
    好比,單鏈表、雙向鏈表。由於地址不連續,因此能夠利用碎片內存。內存

2、非線性結構

與線性結構相反,非線性結構就不是1對1的關係了。它包括:二維數組、多維數組、廣義表、樹結構、圖結構。
數組相對來講還算比較簡單,可是在應用中,樹結構跟圖結構算是用的最多的。基礎

單從樹結構與圖結構,就能夠延伸出不少算法。鏈表

相關文章
相關標籤/搜索