所以我剛剛開始學習C和算法,並且在我的選擇排序算法中遇到了一個問題。它給我這個作爲輸出:C選擇排序謬誤,不會排序最後3個數字
>10
>12
>13
>16
>23
>25
>42
>60
>50
>52
最後三位數字是亂序。從我的眼睛看,他們不應該。你能告訴我們這裏有什麼問題嗎?此外,我的目標是沒有任何指示,這樣做,它仍然有點模糊從最後一次講座,我知道它可以完成沒有它。我相信這比內存錯誤更符合邏輯。謝謝大家!
#include <stdio.h>
int main(void) {
int max = 10;
int a[max];
//Makes unsorted array
a[0] = 10;
a[1] = 23;
a[2] = 50;
a[3] = 12;
a[4] = 52;
a[5] = 60;
a[6] = 25;
a[7] = 13;
a[8] = 42;
a[9] = 16;
/*
SWAP MODEL
printf("a[2] = %d \n", a[2]);
int temp = a[3];
a[3] = a[2];
a[2] = temp;
printf("a[2] = %d \n", a[2]);
*/
//Sorts array
int n;
int s = 0;
int p = 0;
for (n = 0; n < max-1; n++){
int smallest = a[n];
for(s = n + 1; s < max; s++){
if(smallest > a[s]) {
smallest = a[s];
p = s;
}
}
if (n == 0 && p == 0) {
int temp = a[n];
a[n] = a[p];
a[p] = temp;
}
else if (n > 0 && p == 0) {
p = n;
int temp = a[n];
a[n] = a[p];
a[p] = temp;
}
else {
int temp = a[n];
a[n] = a[p];
a[p] = temp;
}
}
//Checks if sorted
for(int number = 0; number < 10; number++) {
printf("%d \n", a[number]);
}
}
+1,用於提供可編譯的示例。 – this