解決鍊錶查詢時耗時過長的問題。
英文全稱:skip list 。
鍊錶 + 多級索引(鍊錶) = 跳表
顧名思義,跳表的查詢是在多個鍊錶之間跳躍查詢的,其路線類似於走台階,如下圖所示:
舉個栗子:
某一時刻,想查詢代號為 8 的節點的資料,按照常規鍊錶查詢,需要從最左側挨個查詢至最右側,遍歷次數為 8 ,時間複雜度為 o(n) 。
若新增一級索引,遍歷次數為 5;若再新增二級索引,遍歷次數為 4,遍歷路線猶如**階一跳一跳的,故該結構名為跳表。
跳表實際上是典型的空間換時間的思想。
時間複雜度:跳表可以說是利用多級鍊錶實現的二分查詢,如圖所示,故 時間複雜度為 o(logn) 。
參考:極客時間《資料結構與演算法之美》王爭(saw:game over!)這門課真心推薦,內容很經典、栗子很形象,裡面還包含了很多面試題目。真是居家旅行必備良藥。
資料結構與演算法 跳表
回顧上節 上節課中我們學習了二分法查詢,最基本的二分法查詢需要隨機的訪問資料,底層都是基於陣列的儲存結構 1 思考問題,如果底層是基於鍊錶的方式儲存資料.是否能用二分法查詢呢?我們只要對陣列進行稍微改造,基於鍊錶實現,並在鍊錶的基礎上分別建立對於的索引,就可以快速的基於鍊錶的方式進行查詢,而且該種方...
資料結構與演算法 跳表
二分查詢利用靜態陣列隨機訪問的特性,可以實現在有序的陣列中快速找到某個值,但是因為靜態陣列需要申請連續的記憶體空間,所以當資料規模比較大時,在記憶體中可能無法申請到所需的連續空間。因此,基於這一特性,我們考慮能否將二分查詢應用於鍊錶結構,這樣就避免連續空間的限制,但是對於鍊錶結構,怎樣提高它的查詢效...
演算法 跳表資料結構
關於跳表 跳表作為一種特殊的有序單鏈表結構,由於鍊錶本身並不支援二分查詢,而在跳表結構中其通過維護多級索引的方式來實現快速查詢 類似於二分查詢 對於其索引的結構為存在兩個指標,分別是next指標指向同一層級的下乙個節點 同時存在乙個down指標指向下一層相同位置 以及相同資料 的節點 通過增加多級索...