每一趟从待排序的数据元素中选出最小(最大)的元素,顺序放在待排序的数列最前,直到全部待排序的数据元素全部排完。
从数组的无序起始位置选择第一个元素与后面的元素相比较,选出最小的元素放在这个位置上,然后再选 择下一个元素与其后面的元素相比较再选出最小元素放在此位置上,每次选择比较都会产生一次交换和有序的最小元素
视图地址:https://visualgo.net/en/sorting
// <summary>
/// 简单选择排序
/// </summary>
class Program
{
static void Main(string[] args)
{
SeleteSort(4,5,82,1,0,400,52,15,566);
Console.ReadKey();
}
static void SeleteSort( params int[] array)
{
if (array.Length==0)
{
return;
}
for (int i = 0; i <array.Length; i++)
{
//默认每次循环第一个索引为最小值
int minValue = array[i];
//默认最小值的索引为第一个
int minIndex = i;
//一趟循环下来找出最小值并保持在 minValue minIndex
for (int j = i+1; j < array.Length; j++)
{
if (array[j]<minValue)
{
minValue = array[j];
minIndex = j;
}
}
//把已经找到的最小的值与i的位置交换
int temp = array[i];
array[i] = minValue;
array[minIndex] = temp;
}
foreach (int temp in array)
{
Console.Write(temp+" ");
}
}
}