天天看點

C# 排序算法總結

1、冒泡排序

1.冒泡排序   将被排序的記錄數組R[1..n]垂直排列,每個記錄R[i]看作是重量為R[i].key的氣泡。根據輕氣泡不能在重氣泡之下的原則,從下往上掃描數組R:凡掃描到違反本原則的輕氣泡,就使其向上"飄浮"(冒泡是以得名)。如此反複進行,直到最後任何兩個氣泡都是輕者在上,重者在下為止。 下面是種的往下冒泡的例子

<code>class</code> <code>Program</code>

<code>   </code><code>{</code>

<code>       </code><code>/// &lt;summary&gt;</code>

<code>       </code><code>/// 冒泡排序</code>

<code>       </code><code>/// &lt;/summary&gt;</code>

<code>       </code><code>/// &lt;param name="numArr"&gt;&lt;/param&gt;</code>

<code>       </code><code>public</code> <code>void</code> <code>Sort(</code><code>int</code><code>[] numArr)</code>

<code>       </code><code>{</code>

<code>           </code><code>int</code> <code>tmpNum;</code>

<code>           </code><code>for</code> <code>(</code><code>int</code> <code>i = 0; i &lt; numArr.Length;i++ )</code><code>//最多做numArr.Length-1趟排序</code>

<code>           </code><code>{</code>

<code>               </code><code>for</code> <code>(</code><code>int</code> <code>j = 0; j &lt; numArr.Length-1;j++ )</code>

<code>               </code><code>{</code>

<code>                   </code><code>if</code> <code>(numArr[j]&gt;numArr[j+1])</code>

<code>                   </code><code>{</code>

<code>                       </code><code>tmpNum = numArr[j];</code>

<code>                       </code><code>numArr[j] = numArr[j + 1];</code>

<code>                       </code><code>numArr[j + 1] = tmpNum;</code>

<code>                   </code><code>}</code>

<code>               </code><code>}</code>

<code>           </code><code>}</code>

<code>       </code><code>}</code>

<code>       </code><code>static</code> <code>void</code> <code>Main(</code><code>string</code><code>[] args)</code>

<code>           </code><code>int</code><code>[] Arr =</code><code>new</code> <code>int</code><code>[] {3,6,1,9,8,7 };</code>

<code>           </code><code>Program p =</code><code>new</code> <code>Program();</code>

<code>           </code><code>p.Sort(Arr);</code>

<code>           </code><code>for</code> <code>(</code><code>int</code> <code>k = 0; k &lt; Arr.Length;k++ )</code>

<code>               </code><code>Console.Write(</code><code>"{0} "</code><code>, Arr[k]);</code>

<code>   </code><code>}</code>

  

2、選擇排序(Selection Sort)

選擇排序的基本思想是:每一趟從待排序的記錄中選出關鍵字最小的記錄,順序放在已排好序的子檔案的最後,直到全部記錄排序完畢。

<code>/// &lt;summary&gt;</code>

<code>/// 選擇排序(Selection Sort)的基本思想是:每一趟從待排序的記錄中選出關鍵字最小的記錄,</code>

<code>/// 順序放在已排好序的子檔案的最後,直到全部記錄排序完畢。</code>

<code>/// &lt;/summary&gt;</code>

<code>/// &lt;param name="numArr"&gt;&lt;/param&gt;</code>

<code>public</code> <code>void</code> <code>SelectionSort(</code><code>int</code><code>[] numArr)</code>

<code>{</code>

<code>    </code><code>int</code> <code>min, tmpNum;</code>

<code>    </code><code>for</code> <code>(</code><code>int</code> <code>i = 0; i &lt; numArr.Length - 1;i++ )</code>

<code>    </code><code>{</code>

<code>        </code><code>min = i;</code>

<code>        </code><code>for</code> <code>(</code><code>int</code> <code>j = i + 1; j &lt; numArr.Length;j++ )</code>

<code>        </code><code>{</code>

<code>            </code><code>if</code> <code>(numArr[j] &lt; numArr[min])</code>

<code>            </code><code>{</code>

<code>                </code><code>min = j;</code>

<code>            </code><code>}</code>

<code>        </code><code>}</code>

<code>        </code><code>tmpNum = numArr[i];</code>

<code>        </code><code>numArr[i] = numArr[min];</code>

<code>        </code><code>numArr[min] = tmpNum;</code>

<code>    </code><code>}</code>

<code>}</code>

<code>static</code> <code>void</code> <code>Main(</code><code>string</code><code>[] args)</code>

<code>    </code><code>int</code><code>[] Arr =</code><code>new</code> <code>int</code><code>[] {3,6,1,9,8,7 };</code>

<code>    </code><code>Program p =</code><code>new</code> <code>Program();</code>

<code>    </code><code>p.SelectionSort(Arr);</code>

<code>    </code><code>for</code> <code>(</code><code>int</code> <code>k = 0; k &lt; Arr.Length; k++)</code>

<code>        </code><code>Console.Write(</code><code>"{0} "</code><code>, Arr[k]);</code>

本文轉自Work Hard Work Smart部落格園部落格,原文連結:http://www.cnblogs.com/linlf03/archive/2012/02/03/2336691.html,如需轉載請自行聯系原作者

繼續閱讀