數據結構和算法基本概念

數據結構概述

線性結構: 這是最常用的數據結構,特點是數據元素之間是一對一的線性關係。體現爲數組、隊列(先進先出)、鏈表(單、雙、環形)、棧(先進後出)等。

         單鏈表 指向後一個節點、雙鏈表指向前後兩個節點;

         線性結構有兩種不同的存儲結構:順序存儲結構、鏈式存儲結構

         順序存儲 連續的存儲空間、 查找快,刪除插入慢

         鏈式存儲 不一定連續、刪除插入塊、查找慢

總結:數據量小的時候首選順序存儲結構,比如ArrayList,數據量大且插入、刪除頻繁時選用鏈式存儲結構,比如LinkedList。

非線性結構: 數據元素之間不是一對一的線性關係。體現爲二維數組、多維數組廣義表、樹結構、圖結構等。

 

算法基礎知識

算法:解決問題的方法和步驟

評價算法的好壞:漸近時間複雜度和漸近空間複雜度。

時間複雜度

時間頻度---T(n)---基本語句執行的重複次數

時間複雜度--忽略常數項、忽略低次項、忽略係數

忽略常數項: n +20 忽略20 、

忽略低次項 :n*n + 2n 忽略2n

忽略係數 : 3n*n 和5 n*n 3和5忽略;

執行曲線分離 n*n*n 和6*n*n

算法的漸進時間複雜度 O(n) O(n*n)

 

漸近時間複雜度的大O標記:

 - 常量時間複雜度 - 布隆過濾器 / 哈希存儲

 - 對數時間複雜度 - 折半查找(二分查找)

 - 線性時間複雜度 - 順序查找 / 桶排序

 - 對數線性時間複雜度 - 高級排序算法(歸併排序、快速排序)

 - 平方時間複雜度 - 簡單排序算法(選擇排序、插入排序、冒泡排序)

 - 立方時間複雜度 - Floyd算法 / 矩陣乘法運算

 - 幾何級數時間複雜度 - 漢諾塔

 - 階乘時間複雜度 - 旅行經銷商問題

9) O(n!)

概念解釋:

b = n^a a叫已n爲底的b的對數

log(a)(b)=n a是底數、b是真數 n是對數;

log2N --->log24 =2 log28 =3 3是以爲2底的8的對數;

while循環每次*2 log2N *3 log3N

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章