每次最外层循环进来,默认下表为i的元素为最小或者最大元素。记录min = i。然后依次和剩下的元素比较,如果有比它大或者小的元素,记录下来索引赋值给min。最后当每i轮循环完毕之后,判断min是否等于i。如果等于则说明i没有变,就是我们默认的最初的值,如果变了,说明最大值或者最小值发生了变化,则应该交换数据。这里要交换的是Array[i] 和Array[min]或者Array[max].
public static int[] SelectSort(int[] Array)
{
for (int i = 0; i < Array.Length - 1; i++)
{
//每次循环进来 默认下表为i的元素为最小或者最大元素
int min = i;
for (int j = i+1; j < Array.Length; j++)
{
if (Array[min] < Array[j])
{
min = j;
}
}
if (min!=i)
{
int temp;
//Array[i]是第几轮默认的最小的数。如果min!=i说明 Array[i]不是最小的数 因此 Array[i]要和Array[min]交换 保证在当前轮Array[i]为最小
temp = Array[i];
Array[i] = Array[min];
Array[min] = temp;
}
}
return Array;
}