1 // 在冒泡排序的基础上理解选择排序
2 // 一趟循环之后取最小的/最大的放最上面的 或是取最小的或最大的放最下面
3 // 假设有数组arrary = new int[5]{1,2,3,5,4},并要求降序排序。
4 // 这里,我们选择最大的放上面。
5
6 // 测试
7 private void Test()
8 {
9 var arrary = new int[5]{1,2,3,5,4};
10 SelectSort(arrary);
11 }
12
13 // 选择排序,降序
14 private void SelectSort(int[] arrary)
15 {
16 int maxIndex = 0;
17 for(int i = 0; i < arrary.Length - 1; i++)
18 {
19 maxIndex = i;
20 count = arrary.Length - i;
21 for(int j = i + 1; j < count; j ++)
22 {
23 if(arrary[j] > arrary[maxIndex])
24 {
25 maxIndex = j;
26 }
27 }
28 if(i != maxIndex)
29 {
30 SwapData(arrary, i, maxIndex);
31 }
32 }
33 }
34
35 // 交换数组中指定两个位置的数据
36 private void SwapData(int[] arrary, int i, int j)
37 {
38 var temp = arrary[i];
39 arrary[i] = arrary[j];
40 arrary[j] = temp;
41 }