思路
第一次从Array[0]~Array[n-1]中选取最小或者最大值,与Array[0]交换
第二次从Array[1]~Array[n-1]中选取最小或者最大值,与Array[1]交换
……
第i次从Array[i-1]~Array[n-1]中选取最小或者最大值,与Array[i-1]交换
总共通过n-1次,得到一个有序序列
- 选择排序一共Array.Length-1轮排序
- 每一轮排序,又是一个循环比较,找出最大最小值
namespace ConsoleApp1 { class Program {
static void Main(string[] args){int[] arr = new int[10] { 4, 9, 76, 43, 2, 7, 23, 54, 1, 44 };SelectSort(arr);foreach(var a in arr){Console.Write(a+" ");}}static void SelectSort(int[] array){int temp = 0;//用于交换的临时变量for(int i = 0; i < array.Length - 1; i++){int minindex = i;//记录最小数的索引for (int j = i + 1; j < array.Length; j++){if (array[minindex] > array[j])//如果发现后面有更小的数,就记录下更小的数和他的索引{minindex = j;}}//这一轮的循环,已经找出了待排序中最小的数,和第一个待排序的交换//有可能minindex==i,所以不要用两变量自身运算进行交换temp = array[i];array[i] = array[minindex];array[minindex] = temp;}}}
}
```
