資料結構學習筆記 跳表

2021-10-11 03:07:25 字數 583 閱讀 7488

基於鍊錶稍加改造的一種各方面效能都比較優秀的動態資料結構, 可支援快速插入, 刪除, 查詢操作, 甚至可以代替紅黑樹

基於原鍊錶每兩個結點向上一級抽索引, 構建出一級索引層, 可構建多級索引, 這種鍊錶加多級索引的結構, 就是跳表

redis中的有序集合(sorted set)就是採用跳表實現

跳表中查詢任意資料的時間複雜度都是o(logn), 但空間複雜度o(n), 每三到五個元素抽乙個索引可以減少索引儲存空間占用

但實際開發中不必太在意索引占用的額外空間, 因為當原始鍊錶中儲存的為物件時, 索引中儲存的指標和物件相比, 占用空間可以忽略

跳表還支援動態的插入和刪除操作, 時間複雜度也是o(logn)

但插入元素同時, 需要維護索引的平衡, 採用隨機函式的方式, 將此結點同時插入到第一層到第k層索引中

刪除操作, 同樣需要刪除掉索引中的結點

跳表採用空間換時間的設計思路, 通過多級索引提高查詢效率, 實現了基於鍊錶的二分查詢

跳表雖然本身不簡單, 但相對紅黑樹的實現還是簡單不少, 有時為了**簡單易讀, 相比紅黑樹會使用跳表

跳表更加靈活, 通過改變索引構建策略, 可以有效平衡執行效率和記憶體消耗

資料結構學習筆記五(跳表)

一 什麼是跳表 在普通鍊錶中要查詢某個元素,只能從頭到尾遍歷鍊錶。這樣查詢的時間複雜度很高 o n 為了提高查詢效率,可以對鍊錶建立 索引 鍊錶加多級索引的結構,就是跳表。在跳表中查詢任意資料的時間複雜度為o logn 由於要儲存索引結構,空間複雜度為o n 跳表利用了 空間換時間 這種思想。跳表不...

資料結構學習筆記

資料結構概述 定義我們如何把現實中大量而複雜的問題以特定的資料型別和特定的儲存結構 儲存到主儲存器 記憶體 中,以及在此基礎上為實現某個功能 比如查詢摸個 元素,刪除某個元素,對所有元素進行排序 而執行的相應操作,這個相應 的操作也叫演算法 資料結構 個體 個體的關係 演算法 對儲存資料的操作 演算...

資料結構學習筆記

資料結構學習筆記 程式 資料結構 演算法 資料結構 資料 結構 結構的本質是關係 資料之間的關係從不通風層面上分為邏輯關係和物理關係 演算法的設計要依據資料的邏輯關係 演算法的實現要依據資料的物理關係 物理關係是邏輯關係的基礎和載體 演算法實現時需要先依據問題抽象出資料模型,即初步確定待處理資料的邏...