1.原理講解
選擇排序原理講解
2.代碼塊
public static void SelectSortMethod(int[] arr)
{
int temp = 0;
for (int i = 0; i < arr.Length - 1; i++)
{
int minVal = arr[i]; //假設 i 下標就是最小的數
int minIndex = i; //記錄我認爲最小的數的下標
for (int j = i + 1; j < arr.Length; j++) //這裏只是找出這一趟最小的數值並記錄下它的下標
{
//說明我們認爲的最小值,不是最小
if (minVal > arr[j]) //這裏大於號是升序(大於是找出最小值) 小於是降序(小於是找出最大值)
{
minVal = arr[j]; //更新這趟最小(或最大)的值 (上面要拿這個數來跟後面的數繼續做比較)
minIndex = j; //記下它的下標
}
}
int index = 0;
//控制檯輸出
foreach (int item in arr)
{
Console.Write(item + ",");
index++;
if (index == arr.Length)
{
Console.WriteLine($"第{i + 1}次");
}
}
//最後把最小的數與第一的位置交換
temp = arr[i]; //把第一個原先認爲是最小值的數,臨時保存起來
arr[i] = arr[minIndex]; //把最終我們找到的最小值賦給這一趟的比較的第一個位置
arr[minIndex] = temp; //把原先保存好臨時數值放回這個數組的空地方, 保證數組的完整性
}
}