每次最外層循環進來,默認下表爲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;
}