跳躍表

一、跳躍表算法

  結構模型(雙向鏈表)
數組

wKioL1iqVqzSS1oqAAAOfw3ICKY923.png-wh_50 

  L1:某些數據的鏈表;(至關於快車)數據結構

  L2:底層全部數據的鏈表;(至關於慢車)ide

  L1和L2中鍵值相同的元素用鏈表鏈接起來spa


二、理想跳躍表blog

wKioL1iqWMyCeLwwAAARhcyE2hI031.png-wh_50

  跳躍表的這種數據結構就是二分查找(用鏈表模擬數組),差很少就是一顆二叉樹,可是有太多的重複元素;查找的時間複雜度爲:O(logn);get


三、跳躍表的插入和刪除
it

  保證左上角一直有元素存在,在開始的時候,先放一個負無窮的數字(保證每一層的開始都是這個負無窮的數字);目的:防止很大的數字被提高以後的狀況;
io

  (1)插入元素x(構建跳躍表的方法) ---->要隨機的選擇它能跑多高
class

  i、先查找x,在底層鏈表中的位置;

  該新元素是否向上一層鏈表提高呢?拋硬幣算法,正面的話(50%),向上提高一層,而後在繼續拋硬幣,正面繼續提高,繼續拋硬幣,直到反面出現爲止;

  (2)、刪除元素

  找到最底層該元素後,逐一貫上刪除便可;

  (3)、跳躍表數據結構分析:

  動態的搜索結構,隨機化的數據結構;

  每個操做的運行時間都是:O(logn);

相關文章
相關標籤/搜索