for (i = 1; i <= 9; i++) {
for (j = 1; j <= 10 - i; j++)
if (a[i-1] - a[i+j-1] > max) { ... } // 索引混亂、max 初始化位置錯、交換邏輯錯
}
int a[10] = {23,10,7,9,15,88,65,50,3,40};
for (int i = 0; i < 9; i++) {
int minIdx = i;
for (int j = i + 1; j < 10; j++)
if (a[j] < a[minIdx]) minIdx = j;
if (minIdx != i) {
int t = a[i]; a[i] = a[minIdx]; a[minIdx] = t;
}
}
// 輸出
for (int i = 0; i < 10; i++) printf("%d ", a[i]);
i = 0..8,內層 j = i+1..9 尋找最小值索引。minIdx 記錄最小值位置,而非差值 max。minIdx != i 時交換,減少無效操作。t,標準三步驟。i, j, minIdx, a[] 變化。**選擇排序核心:每輪選最小(或最大)放到有序區末尾,索引清晰、交換最少。**