跳錶實現

choumin發表於2020-12-13

跳錶是馬里蘭大學William Pugh教授在1990年發表的一篇名為 Skip lists: a probabilistic alternative to balanced trees 的論文上提出的,這篇論文在網上可以下載到PDF版,篇幅不長,只有8頁,而且沒有廢話,前3頁就把跳錶的原理交代清楚了,如果只想瞭解跳錶的實現原理,看前3頁就夠了,強烈建議對跳錶感興趣的同學讀一讀。

跳錶這種資料結構是之前在看redis相關原理時知道的,在好奇心的驅使下去網上找了幾篇部落格看,但其實沒看太明白。跳錶的查詢還好理解,本質上是一種二分查詢,先大步、後小步,逐次逼近。跳錶的插入和刪除不太容易一下子想明白,因為這兩個操作涉及調整跳錶的結構(跳錶對標的是平衡樹,與平衡樹的再平衡類似,跳錶也需要動態調整結構)。之前看過的幾篇部落格,感覺講的比原文複雜,可能引入了後人的優化工作。看完論文,根據作者給出的虛擬碼來實現跳錶,還算相對容易。這裡是我的實現,歡迎各位同學批評指正。

相關文章