选择排序
选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。 选择排序是不稳定的排序方法。
个人理解:选择排序是从一个无序的数组中选出第一个数,然后和后面的数做比较,如果第二个数小于(升序)第一个数,则下把第二个数的下标放在一个临时变量里;如果第三个数比第二个数还小,则把第三个数的下标放在临时变量里;依次类推,最里面的For循环结束,找出最小数的下标之后,和第一个数交换位置。外层循环++,然后在执行上面的步骤。
举个栗子:现有数组18、2、9、4、13
初始数组 | 18 | 2 | 9 | 4 | 13 |
---|---|---|---|---|---|
第一次外循环 | 2 | 18 | 9 | 4 | 13 |
第二次外循环 | 2 | 4 | 9 | 18 | 13 |
第三次外循环 | 2 | 4 | 9 | 18 | 13 |
第四次内循环 | 2 | 4 | 9 | 13 | 18 |
图解
核心代码
int[] arr = new int[] { 5, 4, 9, 1, 8, 3, 7, 2, 6, 0 };
int temp;
int pos = 0;
for (int i = 0; i < arr.Length - 1; i++)
{
pos = i; //存下标
for (int j = i + 1; j <arr.Length; j++)
{
if (arr[j] <arr[pos])
{
pos = j;
}
}
//第i个数与最小的数arr[pos]交换
temp = arr[i];
arr[i] = arr[pos];
arr[pos] = temp;
}