2017-05-21 385 views
2

我試圖產生10個隨機數並對它們進行排序。但他們沒有被排序。在C排序的氣泡排序

#include <stdio.h> 
#include <stdlib.h> 
#include <time.h> 

main() 

{ 
int c, d, swapped, temp; 
int numb[10]; 
time_t t; 

srand(time(&t)); 

for (c=0; c<10; c++) 
{ 
    numb[c] = (rand() % 100) + 1; 
} 

printf("Before sorting:"); 
for (c=0; c<10; c++){ 
    printf("%d\n", numb[c]); 
} 

for (c=0; c<10; c++) 
{ 
    swapped = 0; 
    for (d=0; d < 9 - c; d++) 
    { 
     if (numb[d] > numb[d+1]) 
     { 
      temp = numb[d]; 
      numb[d] = numb[d+1]; 
      numb[d] = temp; 
      swapped = 1; 
     } 
    } 
    if (swapped == 0) 
    { 
     break; 
    } 

} 

printf("\nAfter sorting:\n"); 
for (c=0; c<10; c++) 
{ 
    printf("%d\n", numb[c]); 
} 

return 0; 
} 

我似乎無法弄清楚爲什麼這種不起作用。事實上,它只是反芻同一份清單。有人能指出我犯了什麼錯誤嗎?

+0

'函數srand(時間(&t));' - >'函數srand(時間(NULL));' - 然後你可以刪除'time_t t'; –

+0

你能解釋一下有什麼不同嗎? – 5areductase

+0

只需要保存一個不需要的變量即可。 –

回答

4

用於交換你的代碼是不正確:此代碼

temp = numb[d]; 
numb[d] = numb[d+1]; 
numb[d] = temp; 
swapped = 1; 

應該

temp = numb[d]; 
numb[d] = numb[d+1]; 
numb[d+1] = temp; 
swapped = 1;