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&lt;Entry&lt;K,V&gt;&gt; v) {    Position&lt;Entry&lt;K,V&gt;&gt; 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>()) &lt;= 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&lt;Entry&lt;K,V&gt;&gt; r) {    <font color=#ff8000>while</font><font color=#0000ff> </font>(heap.<font color=#0000ff>isInternal</font>(r)) {      Position&lt;Entry&lt;K,V&gt;&gt; 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>()) &lt;=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>()) &lt; 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&lt;Entry&lt;K,V&gt;&gt; x, Position&lt;Entry&lt;K,V&gt;&gt; y) {    Entry&lt;K,V&gt; 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 + -
显示快捷键?