什麼是數據結構?
數據結構是指相互之間存在的一種關係或多種關係的數據元素的集合和該集合中數據元素之間的關關係組成。簡單點就是數據和數據之間的關係!!!
基礎數據結構
數組
優點 | 缺點 |
---|---|
插入快,如果知道下標,可以快速的存取 | 查找慢,刪除慢,大小固定 |
有序數組
優點 | 缺點 |
---|---|
比無序數組查詢快 | 刪除和插入慢,大小固定 |
棧
優點 | 缺點 |
---|---|
提供後進後出的方式存儲 | 存取其他元素很慢 |
隊列
優點 | 缺點 |
---|---|
提供先進先出的方式存儲 | 存取其他元素很慢 |
鏈表
優點 | 缺點 |
---|---|
插入快,刪除慢 | 查詢慢 |
二叉樹
優點 | 缺點 |
---|---|
查詢,插入,刪除快(前提是樹平衡) | 刪除算法複雜 |
高級數據結構
紅黑樹
優點 | 缺點 |
---|---|
查詢,插入,刪除快(前提是樹平衡) | 算法複雜 |
2-3-4 樹
優點 | 缺點 |
---|---|
查詢,插入,刪除快(前提是樹平衡) | 算法複雜 |
哈希表
優點 | 缺點 |
---|---|
如果知道關鍵字則存取快,插入快 | 刪除慢,如果不知道關鍵字則存取很慢 |
堆
優點 | 缺點 |
---|---|
插入快,刪除快 | 對其他元素存取慢 |
圖
優點 | 缺點 |
---|---|
對現實世界模擬 | 算法慢且複雜 |
算法概述
算法的定義
是指解題方案的準而完整的描述,是一系列的解決問題的清晰指令,算法代表着用系統的方法描述解決問題的策略機制
算法的基本要求
正確性
可讀性
健壯性
時間複雜度
空間輔助度
大O表示法
什麼是大O表示法?
大O表示法可以告訴我我們算法的快慢
大O表示的是操作數,它指出了算法運行時間的增速
O(n) 括號裏的是操作數。
簡介
O(n!) | 隨着數據量的增加,運行時間近乎是直線上升 |
O(2^n) | 隨着數據量的增加,運行時間也幾乎是直線上升 |
O(n^2) | 冒泡排序,插入排序,選擇排序的時間複雜度 |
O(nlogn) | 隨着數量增多,運行時間平緩上升 |
O(logn) | 冒泡排序,插入排序,選擇排序的時間複雜度 |
O(1) | 不受數據量影響,棧和隊列有可以達到! |