極簡教程:數據結構與算法(二)

這是一套關於數據結構與算法的系列文章,值得你持續關注

2020-4-29

數組篇javascript

我儘可能用 最少的文字,最少的代碼。來說明白數據結構與算法。

1. 數組是「線性數據結構」,一樣的數據結構還有「鏈表」,「棧」,「隊列」

2. 與之對立的概念是 「非線性表」 。二叉樹,堆,圖等。由於這些數據結構的方向不僅是「前」,「後」。

3. 數組的原理:在內存地址中找到開始的位置,劃定一片連續的內存地址。只存儲相同類型的數據,這樣方便尋址。

4. 由於是連續的內存地址,因此才能實現隨機訪問元素

尋址算法java

a[i] = 數組開始的位置 + i * 固定大小

5. 數組複雜度分析

動做 複雜度
array 增 O(n)
array 刪 O(n)
array 改 O(1)
array 查:根據下標 O(1)
array 查:循環查 O(logn)

6. 數組,插入優化

若是不須要排序,那麼不用每次都對插入位置後的元素作位移。能夠嘗試替換法

file

7. 刪除優化

不用每次刪除都 給元素移位,能夠先標記被刪除的元素。等刪除的元素積累一段以後一併刪除。

file

8. 大部分語言都有對數組作擴張,好比 javascript 中 Array。其實 javascript 中沒有嚴格意義上的數組。

9. 開發時通常都用 arrayList,若是初始化時給設定一個長度,那麼能夠起到優化的做用。減小一部分 O(n) 操做

10. 在數據長度固定的狀況下,建議使用數組。這樣執行效率更高。

若有不足,歡迎補充。算法

file

本文由博客羣發一文多發等運營工具平臺 OpenWrite 發佈
相關文章
相關標籤/搜索