skip list 推薦篇文章

2021-05-09 13:01:39 字數 548 閱讀 6781

很慚愧, 這個東西是最近 在某人筆試心得 裡 才聽過.. 

簡單介紹下, 具體演算法見下面 鏈結.   英文的, 但是寫的很 清楚 並且有 c#的**實現. 非常好.

一般學資料結構, 最早接觸的就是  二分查詢 吧..  o(lgn)的效率是相當nb的.

二分查詢 使用條件: 1, 順序表(就是陣列, 可隨機定位). 2, 排序好..

條件1 是線性鍊錶 無法 達到的. 所以對 即使排序好的 單鏈表, 還是要o(n) 的 查詢. (當然可以用 樹, 事實上, skip_list 就是 用來 代替樹的. 因為後者 在 極端 情況下, 就變成 線性表)

為了解決 二分查詢 隨機 訪問的 瓶頸, skip_list給 每個節點 多個 指標.

比如:  第乙個元素 增加乙個指標 使其指向 最中間元素. 這樣, 在查詢時, 可像 二分查詢一樣,  確定 是從 鍊錶 前半部分, 還是 後半部分 進行.. 以此類推... 這可能就是 skip_list 產生的動機吧..

推薦兩篇文章

1.google檔案系統 google file system 摘要 我們設計並實現了google檔案系統,乙個為資料中心的大規模分布應用設計的可伸縮的分布檔案系統。google檔案系統雖然執行在廉價的普遍硬體上,但是可以提供容錯能力,為大量客戶機提供高效能的服務。我們的系統與許多以前的分布檔案系統...

長篇文章分頁

public string nohtml string htmlstring 去除html標記 public string outputbysize string p strcontent 分頁函式 else if request.querystring pages null catch set t...

長篇文章的分頁

region 對於長篇文章的分頁 根據每頁顯示的字數分 string articlecontent changesize dr artic content tostring 載入全文 int contentlength articlecontent.length 計算全文長度 const int p...