一、跳躍表算法
結構模型(雙向鏈表)
數組
L1:某些數據的鏈表;(至關於快車)數據結構
L2:底層全部數據的鏈表;(至關於慢車)ide
L1和L2中鍵值相同的元素用鏈表鏈接起來spa
二、理想跳躍表blog
跳躍表的這種數據結構就是二分查找(用鏈表模擬數組),差很少就是一顆二叉樹,可是有太多的重複元素;查找的時間複雜度爲:O(logn);get
三、跳躍表的插入和刪除
it
保證左上角一直有元素存在,在開始的時候,先放一個負無窮的數字(保證每一層的開始都是這個負無窮的數字);目的:防止很大的數字被提高以後的狀況;
io
(1)插入元素x(構建跳躍表的方法) ---->要隨機的選擇它能跑多高
class
i、先查找x,在底層鏈表中的位置;
該新元素是否向上一層鏈表提高呢?拋硬幣算法,正面的話(50%),向上提高一層,而後在繼續拋硬幣,正面繼續提高,繼續拋硬幣,直到反面出現爲止;
(2)、刪除元素
找到最底層該元素後,逐一貫上刪除便可;
(3)、跳躍表數據結構分析:
動態的搜索結構,隨機化的數據結構;
每個操做的運行時間都是:O(logn);