




下載本文檔
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、Skip list層次的選擇:插入列的“高度”較前者來說顯得更加重要,也更加難以確定。由于它的不確定性,使得不 同的決策可能會導致截然不同的算法效率。為了使插入數據之后,保持該數據結構進行各種 操作均為O(logn)復雜度的性質,我們引入隨機化算法(Randomized Algorithms)。我們定義一個隨機決策模塊,它的大致內容如下:產生一個0到1的隨機數rr random()如果r小于一個常數p,則執行方案A,if rp then do A否則,執行方案Belse do B初始時列高為1。插入元素時,不停地執行隨機決策模塊。如果要求執行的題 操作,則將 列的高度加1,并且繼續反復執行隨機
2、決策模塊。直到第i次,模塊要求執行的是B操作, 我們結束決策,并向跳躍表中插入一個高度為i的列。性質1:根據上述決策方法,該列的高度大于等于k的概率為plk-1)。此處有一個地方需要注意,如果得到的i比當前跳躍表的高度h還要大的話,則需要增加新 的鏈,使得跳躍表仍滿足先前所提到的條件。randomLevel()Ivl := IrandofnQ that returns a random value in 0.1)while randonfi() p and llvl MaxLevel doIvl :二 M + 1return Ivl自:數據結構與算法public void choosePowe
3、rs()powersmaxLevel-1=(2=0;i-,j+)powersi=powersi+1-(2j);public int chooseLevel()int i,r=Math.abs(rd.nextInt()%powersmaxLevel-1+1;for(i=1;imaxLevel;i+)if(rpowersi)return i-1;return i-1;假設最高層次maxLevel=4.則15個元素,在第一層需要8個節點,第二層需要4個,第三層需 要2個,第四層需要1個。每插入一個節點時,就生成一個1到15之間的隨機數r(r=Math. abs(rd .nextInt()%power
4、s maxLevel -1+1;),如果 r9 則節點在第一層,如果 r13,那么節點插在第二層,如果rtieaderfor i := list-level down to 1 dowhile xforwardi-key forwardi- searchKjsy forward lif XTKey = search Key then x- value := newValjeelseIvl := randomLevelOif Ivl list-level thenfor i := list-level + 1 to M doupdatei := list-lieaderlistlevel:二 I
5、vlx := make Node(Ivl, search Keyr value)for i := 1 to level doxforwardi := updatei-orwardiupchteiTforwandi := xDeletefl ist: search Key)local update1 MaxLevelx :二 list-lieaderfor i := list-level down to 1 dowhile x-forwardi-key forwardiupdate i - xx := x*fbrward lit XTKey = search Key thenfor i := 1
6、 to list-level doiff updatei-forwardi # x then breakupdatep-*fbrwardi := x-*fonvandiIriee(x)while listlevel 1 andlist-header-forwardlist-level| = NIL dolist-level := list-level - 1Java實現:class SkipNodeE extends Comparable public final E value;public final SkipNode forward; / array of pointersSuppres
7、sWarnings(unchecked)public SkipNode(int level, E value)forward = new SkipNodelevel + 1;this.value = value;public class SkipSetE extends Comparablepublic static final double P = 0.5;public static final int MAX_LEVEL = 6;public static int randomLevel() int lvl = (int)(Math.log(1.-Math.random()/Math.lo
8、g(1.-P); return Math.min(lvl, MAX_LEVEL);public final SkipNode header = new SkipNode(MAX_LEVEL, null);public int level = 0;public String toString()StringBuilder sb = new StringBuilder();sb.append );SkipNode x =header.forward0;while (x != null) sb.append(xvalue);x = xforward0;if (x != null)sb.append,
9、);sb.append );return sb.toString();public boolean contains(E searchvalue) SkipNode x = header;for (int i = level; i = 0; i-) while (x.forwardi != null & x.forwardi.pareTo(searchValue) 0) x = x.forwardi; x = x.forward0;return x != null & x.value.equals(searchValue); SuppressWarnings(unchecked) public
10、 void insert(E value) SkipNode x = header; SkipNode update = new SkipNodeMAX_LEVEL + 1;for (int i = level; i = 0; i-) while (x.forwardi != null & x.forwardi.pareTo(value) level) for (int i = level + 1; i = lvl; i+) updatei =header; level = lvl;x =new SkipNode(lvl, value); for (int i = 0; i = lvl; i+
11、) x.forwardi = updatei.forwardi; updatei .forwardi = x; SuppressWarnings(unchecked)public void delete(E value) SkipNode x = header;SkipNode update = new SkipNodeMAX_LEVEL + 1;for (int i = level; i = 0; i-) while (x.forwardi != null & x.forwardi.pareTo(value) 0) x = x.forwardi;updatei = x;x = x.forwa
12、rd0;if (x.value.equals(value) for (int i = 0; i 0 & header.forwardlevel = null) level-; public static void main(String args) SkipSet ss = new SkipSet();System out.println(ss);ss.insert(5);ss.insert(10);ss.insert(7);ss.insert(7);ss.insert(6);if (ss.contains(7) Systemout.println(7 is in the list); System out.pr
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 加強信息分析的行政管理師試題及答案
- 新時代的微生物檢驗技師能力試題及答案
- 重要項目管理考試知識的歸納與試題答案
- 2025年證券從業資格證考試的常見題型試題及答案
- 重慶高校課題申報書
- 證券從業資格證考試心態調整方法試題及答案
- 項目管理相關法規的試題及答案
- 注冊會計師考試過程中的信息管理與有效溝通探討試題及答案
- 課題申報評審書模板
- 突破思維界限的證券試題及答案
- 2025年陜西省公民科學素質大賽考試指導題庫(含答案)
- DBJT45-047-2017 超長混凝土結構裂縫控制技術規程
- 2025年中國石化銷售股份有限公司招聘筆試參考題庫含答案解析
- 2025年山東濰坊市再擔保集團股份限公司社會招聘11人高頻重點提升(共500題)附帶答案詳解
- 2025年新勞動合同范本
- 2021譯林版高中英語選擇性必修四Unit-1課文翻譯
- 中醫方劑學測試題(含答案)
- 【課件】中職生職業生涯規劃
- 【MOOC】中醫與辨證-暨南大學 中國大學慕課MOOC答案
- 2023年秋江蘇開放大學公共部門人力資源管理綜合大作業
- 寧夏銀川一中下學期2025屆高三第三次模擬考試數學試卷含解析
評論
0/150
提交評論