1.概要
选择排序也属于内部排序法,是从需要排序的数据中,按制定的规则选出某一元素,再依定交换位置后达到排序的目的。.
思想:
选择排序(select sorting)也是一种简单的排序方法。它的基本思想是:第一次从array[0] ~ array[n-1]中选取最小值,与array[1]交换,第三次从array[2] ~ array[n-1]中选取最小值,与array[2]交换....第i次从array[i-1]中选取最小值,与array[i-1]交换,...,第n-1次从array[n-2]~array[n-1]中选取最小值,与array[n-2]交换,总共通过n-1次,得到一个按序从小到大排列的有序序列。
再次举例:
原始数组:101,34,119,1
第一轮:1,34,119,101
第二轮:1,34,119,101
第三轮:1,34,101,119
说明:
1.选择排序一共有数组大小-1轮排序
2.每轮排序,又是一个循环
2.1先假定当前这个数是最小数
2.2然后和后面的每个数进行比较,如果发现有比当前数更小的数,就重新确定最小数,并得到下标
2.3当便利到数组的最后是,就得到本轮最小数和下标
2.4交换
2.详细内容
public class SelectSort
{
public static void Sort(int[] array)
{
for (int i = 0; i < array.Length -1; i++)
{
//使用逐步推导的方式来进行选择排序
int minIndex = i;
int min = array[i];
for (int j = i + 1; j < array.Length; j++)
{
if (min > array[j])
{
min = array[j];
minIndex = j;
}
}
if (minIndex != i)
{
//将最小值,挡在array[0],即交换
array[minIndex] = array[i];
array[i] = min;
}
Console.WriteLine($"第{ i + 1 }轮排序后!");
Console.WriteLine(string.Join(' ', array));
}
}
}
static void Main(string[] args)
{
int[] array = { 101,34,119,1 };
SelectSort.Sort(array);
Console.Read();
}