heappriorityqueue-auxiliary.html
来自「经典的数据结构源代码(java 实现)」· HTML 代码 · 共 52 行
HTML
52 行
<html><head><title>Code Fragment</title></head><body text=#000000><center></center><br><br><dl><dd><pre> <font color = #ff0080>/** Performs up-heap bubbling */</font> <font color=#8000a0><font color=#8000a0>protected</font> </font><font color=#8000a0>void</font> <font color=#0000ff>upHeap</font>(Position<Entry<K,V>> v) { Position<Entry<K,V>> u; <font color=#ff8000>while</font><font color=#0000ff> </font>(!heap.<font color=#0000ff>isRoot</font>(v)) { u = heap.<font color=#0000ff>parent</font>(v); <font color=#ff8000>if</font><font color=#0000ff> </font>(comp.<font color=#0000ff>compare</font>(u.<font color=#0000ff>element</font>().<font color=#0000ff>getKey</font>(), v.<font color=#0000ff>element</font>().<font color=#0000ff>getKey</font>()) <= 0) <font color=#ff8000>break</font>; <font color=#0000ff>swap</font>(u, v); v = u; } } <font color = #ff0080>/** Performs down-heap bubbling */</font> <font color=#8000a0><font color=#8000a0>protected</font> </font><font color=#8000a0>void</font> <font color=#0000ff>downHeap</font>(Position<Entry<K,V>> r) { <font color=#ff8000>while</font><font color=#0000ff> </font>(heap.<font color=#0000ff>isInternal</font>(r)) { Position<Entry<K,V>> s; <font color=#ff0080>// the position of the smaller child</font> <font color=#ff8000>if</font><font color=#0000ff> </font>(!heap.<font color=#0000ff>hasRight</font>(r)) s = heap.<font color=#0000ff>left</font>(r); <font color=#8000a0><font color=#ff8000>else</font> </font><font color=#ff8000>if</font><font color=#0000ff> </font>(comp.<font color=#0000ff>compare</font>(heap.<font color=#0000ff>left</font>(r).<font color=#0000ff>element</font>().<font color=#0000ff>getKey</font>(), heap.<font color=#0000ff>right</font>(r).<font color=#0000ff>element</font>().<font color=#0000ff>getKey</font>()) <=0) s = heap.<font color=#0000ff>left</font>(r); <font color=#ff8000>else</font> s = heap.<font color=#0000ff>right</font>(r); <font color=#ff8000>if</font><font color=#0000ff> </font>(comp.<font color=#0000ff>compare</font>(s.<font color=#0000ff>element</font>().<font color=#0000ff>getKey</font>(), r.<font color=#0000ff>element</font>().<font color=#0000ff>getKey</font>()) < 0) { <font color=#0000ff>swap</font>(r, s); r = s; } <font color=#ff8000>else</font> <font color=#ff8000>break</font>; } } <font color = #ff0080>/** Swaps the entries of the two given positions */</font> <font color=#8000a0><font color=#8000a0>protected</font> </font><font color=#8000a0>void</font> <font color=#0000ff>swap</font>(Position<Entry<K,V>> x, Position<Entry<K,V>> y) { Entry<K,V> temp = x.<font color=#0000ff>element</font>(); heap.<font color=#0000ff>replace</font>(x, y.<font color=#0000ff>element</font>()); heap.<font color=#0000ff>replace</font>(y, temp); } <font color = #ff0080>/** Text visualization for debugging purposes */</font> <font color=#8000a0><font color=#8000a0>public</font> </font><font color=#8000a0>String</font> <font color=#0000ff>toString</font>() { <font color=#8000a0><font color=#ff8000>return</font> </font>heap.<font color=#0000ff>toString</font>(); }</dl></body></html>
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?