【算法】选择排序
新建中间商 → 依次比较 → 找出极值 → 放入目标位置 Length-1-轮数。比较n轮
算法解析
数据:3、7、1、5、4、2、6
- 一般中间商盛放索引值为0的数,然后对后续数依次比较。→ 中间商为0。主义中间商存储的是索引
- 中间商找到比自己大的值后,改变索引值。→ 7>3 ,所以中间商改为1
- 当一轮比较结束,即没有再比中间商再大的值后,中间商与当前数交换索引。此时:数字6的索引值改为1,7的索引值改为6
代码实现
int[] arr = new int[] { 3,7,1,5,4,2,6 };
for (int m = 0; m < arr.Length; m++){//第一步 声明一个中间商 来记录索引//每一轮开始 默认第一个都是极值int index = 0;//第二步//依次比较// -m的目的 是排除上一轮 已经放好位置的数for (int n = 1; n <arr.Length - m; n++){//第三步//找出极值(最大值)if (arr[index] < arr[n]){index = n;}}//第四步 放入目标位置//Length - 1 - 轮数//如果当前极值所在位置 就是目标位置 那就没必要交换了if (index != arr.Length - 1 - m){int temp = arr[index];arr[index] = arr[arr.Length - 1 - m];arr[arr.Length - 1 - m] = temp;}
}for (int i = 0; i<arr.Length; i++){Console.Write(arr[i] + " ");
}