我比较喜欢的两种排序方法(冒泡排序、选择排序)

选择排序,每一次外循环,在无序数中选择出一个最小,并放在无序数中的第一位

View Code
 1 public static void SelectSort(int[] list)        //选择排序(升序) 
 2         {
 3             int min;//记录最小值索引
 4             int N = list.Length;                      //获得数组list的长度N
 5             for (int i = 0; i < N - 1; i++)           //外循环进行N-1轮比较
 6             {
 7                 min = i;//假设当前索引就是最小值索引
 8                 for (int j = i; j < N ; j++)          //内循环中在无序数中找最小值(j=i这里循环从i开始,因为i之前都是有序数,不用再比较了)
 9                 {
10                     if (list[min] > list[j])
11                     {
12                         min = j;
13                     }
14                 }
15                 //最小值与无序数中的第一个元素交换
16                 int t = list[min];
17                 list[min] = list[i];
18                 list[i] = t;
19             }
20         }

冒泡排序,每一次外循环,其中的最大数就下沉到当前两两比较数的最后一位

View Code
 1 public static void BubbleSort(int[] list)     //冒泡排序(升序)
 2         {
 3             int N = list.Length;                      //获得数组list的长度N
 4             for (int i = 1; i <= N - 1; i++)          //外循环进行N-1轮比较
 5             {
 6                 for (int j = 0; j <= N - 1 - i; j++)   //内循环进两两比较,大数下沉(‘- i’外循环循环完一次选出一个最大值放在后面,后面的就不用再比较了,)
 7                 {
 8                     if (list[j] > list[j+1])          //前一个数比后一个数大就替换当前两个数,最后最大数就到最后一个了
 9                     {
10                         int t = list[j];
11                         list[j] = list[j+1];
12                         list[j+1] = t;
13                     }
14                 }
15             }
16         }

下面就让我们来实现一下吧!

View Code
 1 private void Form1_Load(object sender, EventArgs e)
 2         {
 3             //数组排序
 4             int[] iList = new int[5];
 5             Random rd = new Random();
 6             for (int i = 0; i < iList.Length; i++)
 7             {
 8                 int iRD = rd.Next(1, 51);
 9                 if (iList.Contains(iRD))
10                 {
11                     i--;
12                     continue;
13                 }
14                 iList[i] = iRD;
15             }
16             BubbleSort(iList);
17 
18             string strWrite = "";
19             foreach (int i in iList)
20             {
21                 strWrite += i + " ";
22             }
23             textBox1.Text = strWrite;
24         }

 

 

posted @ 2012-09-17 12:56  志誠  阅读(296)  评论(0编辑  收藏  举报