sort-quicksortstep.html

来自「经典的数据结构源代码(java 实现)」· HTML 代码 · 共 38 行

HTML
38
字号
<html><head><title>Code Fragment</title></head><body text=#000000><center></center><br><br><dl><dd><pre>  <font color=#8000a0><font color=#8000a0>private</font> </font><font color=#8000a0>static</font> &lt;E&gt; <font color=#8000a0><font color=#8000a0>void</font> </font><font color=#0000ff>quickSortStep </font>(E[] s, Comparator&lt;E&gt; c,                              <font color=#8000a0><font color=#8000a0>int</font> </font>leftBound, <font color=#8000a0><font color=#8000a0>int</font> </font>rightBound ) {    <font color=#ff8000>if</font><font color=#0000ff> </font>(leftBound &gt;= rightBound) <font color=#ff8000>return</font>; <font color=#ff0080>// the indices have crossed</font>    <font color=#8000a0>E </font>temp;  <font color=#ff0080>// temp object used for swapping</font>    <font color=#8000a0>E </font>pivot = s[rightBound];    <font color=#8000a0><font color=#8000a0>int</font> </font>leftIndex = leftBound;     <font color=#ff0080>// will scan rightward</font>    <font color=#8000a0><font color=#8000a0>int</font> </font>rightIndex = rightBound-1; <font color=#ff0080>// will scan leftward</font>    <font color=#ff8000>while</font><font color=#0000ff> </font>(leftIndex &lt;= rightIndex) { <font color=#ff0080>// scan right until larger than the pivot</font>      <font color=#ff8000>while</font><font color=#0000ff> </font>(<font color=#0000ff> </font>(leftIndex &lt;= rightIndex) &&<font color=#0000ff> </font>(c.<font color=#0000ff>compare</font>(s[leftIndex], pivot)&lt;=0) )        leftIndex++;       <font color=#ff0080>// scan leftward to find an element smaller than the pivot</font>      <font color=#ff8000>while</font><font color=#0000ff> </font>(<font color=#0000ff> </font>(rightIndex &gt;= leftIndex) &&<font color=#0000ff> </font>(c.<font color=#0000ff>compare</font>(s[rightIndex], pivot)&gt;=0))        rightIndex--;      <font color=#ff8000>if</font><font color=#0000ff> </font>(leftIndex &lt; rightIndex) { <font color=#ff0080>// both elements were found</font>        temp = s[rightIndex]; 	s[rightIndex] = s[leftIndex]; <font color=#ff0080>// swap these elements</font>	s[leftIndex] = temp;      }    } <font color=#ff0080>// the loop continues until the indices cross</font>    temp = s[rightBound]; <font color=#ff0080>// swap pivot with the element at leftIndex</font>    s[rightBound] = s[leftIndex];     s[leftIndex] = temp; <font color=#ff0080>// the pivot is now at leftIndex, so recurse</font>    <font color=#0000ff>quickSortStep</font>(s, c, leftBound, leftIndex-1);    <font color=#0000ff>quickSortStep</font>(s, c, leftIndex+1, rightBound);  }</dl></body></html>

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?