資料結構與演算法 基礎概念
資料結構:儲存資料的不同的方式。
1資料每個格佔用空間一樣大,格子挨在一起 叫陣列
插入新值:
如果要在一個陣列中插入一個值,那就比較難,因為格子是沒有空隙的。那怎麼辦呢,1.需要重新分配一個新單元格,比原來的要大,然後複製前後的資料,這個空間正好能裝入要加入的值。
查詢某個值:
根據單元格的所佔大小(計算偏移量),可以直接就能定位到要找的資料
2每個格子裡存著資料,還存著指向下一個小格子的指標,像一個鏈條,這樣的方式叫做連結串列
插入新值:
如果有一個連結串列,需要在中間插一個新值,需要將原有的鏈條打斷,然後和新值關聯。這個就比較容易
等等
查詢某個值:
必須通過鏈條一個一個往後找
演算法:同一個問題的不同解決方法。
如何知道演算法的優劣
時間測算
計算演算法時間差 (可以在程式碼前後計算時間)
幅度不夠迴圈來湊, (可以將這個程式碼迴圈10萬次看時間)
空間測算
時間複雜度
大O標記法,大O就是來標識時間複雜度的,計算機執行的時間隨著問題規模的擴大,時間變化的規律。
舉例:
比如陣列查第4個陣列和查第40萬的陣列,他們都只是需要計算一下偏移量,規模擴大對其沒有影響,都是固定的一個值,是個常數,那用
O(1)來表示
再比如 訪問連結串列的第4個值和查第最後一個值(算時間複雜度,都是要考慮最差的情況)讀一個是1s那讀4個就需要4s
O(n) 線性擴大 一般會忽略常數項比如O(2n) 忽略成O(n)
求陣列的平均數,時間複雜度是O(n) 因為需要把所有值加起來
兩遍迴圈就是n的平方
三遍迴圈那就是n的立方
空間複雜度
隨著問題規模的擴大,空間的變化規律
相關文章
- 資料結構與演算法(1)- 基礎概念資料結構演算法
- 資料結構與演算法 基礎排序資料結構演算法排序
- JavaScript 資料結構與基礎演算法JavaScript資料結構演算法
- 基礎夯實:基礎資料結構與演算法(一)資料結構演算法
- 前端資料結構---相關基礎概念前端資料結構
- 演算法與資料結構基礎 - 排序(Sort)演算法資料結構排序
- 資料結構與演算法——基礎篇(一)資料結構演算法
- 基礎面試題 — 資料結構與演算法面試題資料結構演算法
- 演算法與資料結構之基礎排序演算法演算法資料結構排序
- 資料結構與演算法之基礎知識資料結構演算法
- 前端基礎系列(三) -- 演算法 + 資料結構基礎前端演算法資料結構
- 演算法與資料結構基礎 - 連結串列(Linked List)演算法資料結構
- 資料結構 & 演算法 in Swift (一):Swift基礎和資料結構資料結構演算法Swift
- 演算法與資料結構基礎 - 雜湊表(Hash Table)演算法資料結構
- 資料結構與演算法-kd二叉樹(基礎)資料結構演算法二叉樹
- 演算法與資料結構基礎 - 分治法(Divide and Conquer)演算法資料結構IDE
- 資料結構與演算法基礎之指標和陣列資料結構演算法指標陣列
- Redis基礎(一)資料結構與資料型別Redis資料結構資料型別
- 資料結構基礎和演算法題系列總結資料結構演算法
- 《資料結構與演算法》之十大基礎排序演算法資料結構演算法排序
- Redis基礎資料結構Redis資料結構
- 資料結構與演算法-資料結構(棧)資料結構演算法
- [開篇]基礎演算法和資料結構0演算法資料結構
- Python資料結構與演算法_第1節_引入概念Python資料結構演算法
- 資料結構基礎 連結串列資料結構
- 演算法與資料結構系列 ( 二 ) - 實現前的基礎準備演算法資料結構
- 第二章——資料結構與演算法基礎(佔比較高)資料結構演算法
- 資料結構與演算法——排序演算法-基數排序資料結構演算法排序
- 資料結構基礎知識資料結構
- 基礎資料結構大賞資料結構
- 資料結構與演算法資料結構演算法
- 資料結構:初識(資料結構、演算法與演算法分析)資料結構演算法
- Redis基礎——剖析基礎資料結構及其用法Redis資料結構
- 演算法資料結構 | 圖論基礎演算法——拓撲排序演算法資料結構圖論排序
- 《Hbase原理與實踐》讀書筆記——2.基礎資料結構與演算法筆記資料結構演算法
- 資料結構與演算法:圖形結構資料結構演算法
- 資料結構基礎學習之(串與陣列)資料結構陣列
- Python資料分析 Pandas模組 基礎資料結構與簡介Python資料結構