陣列在以下三個情形下很有用:
1)資料量較小。
2)資料規模已知。
3)隨機訪問,修改元素值。
如果插入速度很重要,選擇無序陣列。如果查詢速度很重要,選擇有序陣列,並使用二分查詢。
鍊錶的出現解決了陣列的兩個問題:
1)需要預先知道資料規模
2)插入效率低
1)資料量較小
2)不需要預先知道資料規模
3)適應於頻繁的插入操作
1)有序陣列可以通過二分查詢方法具有很高的查詢效率(o(log n)),而鍊錶只能使用順序查詢,效率低下(o(n))。
1)有序陣列具有較高的查詢效率(o(log n)),而鍊錶具有較高的插入效率(頭插法,o(1)),結合這兩種資料結構,建立一種貌似完美的資料結構,也就是二叉查詢樹。
1)資料是隨機分布的
2)資料量較大
3)頻繁的查詢和插入操作(可以提供o(log n)級的查詢、插入和刪除操作)
1)如果處理的資料是有序的(公升序/降序),那麼構造的二叉查詢樹就會只有左子樹(或右子樹),也就是退化為鍊錶,查詢效率低下(o(log n))。
1)針對二叉查詢樹可能會退化為鍊錶的情況,提出了平衡樹,平衡樹要求任意節點的左右兩個子樹的高度差不超過1,避免退化為鍊錶的情況。
1)無論資料分布是否隨機都可以提供o(log n)級別的查詢、插入和刪除效率
2)資料量較大
1)平衡樹的實現過於複雜。
同平衡樹一樣,雜湊表也不要求資料分布是否隨機,不過雜湊表的實現比平衡樹要簡單得多。
1)不需要對最大最小值訪問。
2)無論資料分布是否隨機,理想情況下(無衝突)可以提供o(1)級別的插入、查詢和刪除效率。
3)資料量較大
1)由於是基於陣列的,陣列(雜湊表)建立後難以擴充套件,使用開放位址法的雜湊表在基本被填滿時,效能下降的非常嚴重。
2)不能對最大最小值訪問
常見資料結構應用場景
可以簡單的按照速度將通用資料結構劃分為 陣列和鍊錶 最慢 樹 較快 雜湊表 最快 增 刪 改 查是四大常見操作,不過其實可以濃縮為兩個操作 增和查。刪除操作和和修改操作都是建立在查詢操作上的,所以完美的資料結構應該是具有較高的插入效率和查詢效率。可以根據下圖選擇合適的通用資料結構 陣列在以下三個情形...
常見資料結構應用場景
可以簡單的按照速度將通用資料結構劃分為 陣列和鍊錶 最慢 樹 較快 雜湊表 最快 增 刪 改 查是四大常見操作,不過其實可以濃縮為兩個操作 增和查。刪除操作和和修改操作都是建立在查詢操作上的,所以完美的資料結構應該是具有較高的插入效率和查詢效率。可以根據下圖選擇合適的通用資料結構 陣列在以下三個情形...
Redis常見資料結構以及使用場景 微博 分析
1.string 常用命令 set,get,decr,incr,mget 等。string資料結構是簡單的key value型別,value其實不僅可以是string,也可以是數字。常規key value快取應用 常規計數 微博數,粉絲數等。2.hash 常用命令 hget,hset,hgetall...