原始碼 for(j=i+1; in; j++) 條件判斷錯誤,導致無限迴圈。正確寫法:
void selectionSort(int arr[], int n)
{
for (int i = 0; i < n - 1; i++)
{
int minIdx = i;
for (int j = i + 1; j < n; j++) // 修正:j < n
{
if (arr[j] < arr[minIdx])
minIdx = j;
}
if (minIdx != i) // 僅在找到較小值時交換
{
int temp = arr[i];
arr[i] = arr[minIdx];
arr[minIdx] = temp;
}
}
}
j < n,非 in。if (minIdx != i) 內,避免不必要的自我交換。