go語言真的是很簡潔,下面用它來實作快速排序算法
<code>package </code><code>qsort</code>
<code>func quickSort(values []</code><code>int</code><code>, left </code><code>int</code><code>, right </code><code>int</code><code>) {</code>
<code> </code><code>if</code> <code>left < right {</code>
<code> </code><code>// 設定基準值</code>
<code> </code><code>temp := values[left]</code>
<code> </code><code>// 設定哨兵</code>
<code> </code><code>i, j := left, right</code>
<code> </code><code>for</code> <code>{</code>
<code> </code><code>// 從右向左找,找到第一個比基準值小的數</code>
<code> </code><code>for</code> <code>values[j] >= temp && i < j {</code>
<code> </code><code>j--</code>
<code> </code><code>}</code>
<code> </code><code>// 從左向右找,找到第一個比基準值大的數</code>
<code> </code><code>for</code> <code>values[i] <= temp && i < j {</code>
<code> </code><code>i++</code>
<code> </code><code>// 如果哨兵相遇,則退出循環</code>
<code> </code><code>if</code> <code>i >= j {</code>
<code> </code><code>break</code>
<code> </code><code>// 交換左右兩側的值</code>
<code> </code><code>values[i], values[j] = values[j], values[i]</code>
<code> </code><code>}</code>
<code> </code><code>// 将基準值移到哨兵相遇點</code>
<code> </code><code>values[left] = values[i]</code>
<code> </code><code>values[i] = temp</code>
<code> </code><code>// 遞歸,左右兩側分别排序</code>
<code> </code><code>quickSort(values, left, i-1)</code>
<code> </code><code>quickSort(values, i+1, right)</code>
<code> </code><code>}</code>
<code>}</code>
<code>func QuickSort(values []</code><code>int</code><code>) {</code>
<code> </code><code>quickSort(values, 0, len(values)-1)</code>
本文轉自 ustb80 51CTO部落格,原文連結:http://blog.51cto.com/ustb80/1575230,如需轉載請自行聯系原作者