天天看点

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,如需转载请自行联系原作者

继续阅读