我比较喜欢的两种排序方法(冒泡排序、选择排序)
选择排序,每一次外循环,在无序数中选择出一个最小,并放在无序数中的第一位
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 }