冒泡排序

冒泡排序(Bubble Sort)是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端。

代码
   
     
1 using System;
2   using System.Collections.Generic;
3
4 namespace Com.Colobu.Algorithm.Exchange
5 {
6 /// <summary>
7 /// 冒泡排序是这样实现的:
8 ///
9 /// 1. 首先将所有待排序的数字放入工作列表中。
10 /// 2. 从列表的第一个数字到倒数第二个数字,逐个检查:若某一位上的数字大于他的下一位,则将它与它的下一位交换。
11 /// 3. 重复2号步骤(倒数的数字加1。例如:第一次到倒数第二个数字,第二次到倒数第三个数字,依此类推...),直至再也不能交换。
12 ///
13 /// 平均时间复杂度:O(n^2)
14 /// Stability:Yes
15 /// </summary>
16 public class BubbleSortAlgorithm
17 {
18 public static void BubbleSort < T > (IList < T > szArray) where T:IComparable
19 {
20 int i;
21 int j;
22 Http: // www.clobu.com
23
24 T temp; // 交换变量
25 bool swapped = false ;
26 for (i = szArray.Count - 1 ; i >= 0 ; i -- )
27 {
28 for (j = 1 ; j <= i; j ++ )
29 {
30 if (szArray[j - 1 ].CompareTo(szArray[j]) > 0 )
31 {
32 temp = szArray[j - 1 ];
33 szArray[j - 1 ] = szArray[j];
34 szArray[j] = temp;
35 swapped = true ;
36 }
37 }
38 if ( ! swapped)
39 break ;
40 }
41 }
42 }
43 }
44

 

你可能感兴趣的:(冒泡排序)