很慚愧, 這個東西是最近 在某人筆試心得 裡 才聽過..
簡單介紹下, 具體演算法見下面 鏈結. 英文的, 但是寫的很 清楚 並且有 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...