2017-05-21 2 views
2

Ich versuche, 10 Zufallszahlen zu generieren und sie zu sortieren. Aber sie werden nicht sortiert.Blasensortierung in C nicht sortiert

#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; 
} 

Ich kann nicht scheinen, herauszufinden, warum diese Art nicht funktioniert. In der Tat, erstaunt es einfach die gleiche Liste. Kann jemand darauf hinweisen, wo ich einen Fehler gemacht habe?

+0

'srand (time (&t));' -> 'srand (time (NULL));' - Sie dann kann das 'time_t t' entfernen; –

+0

Können Sie erklären, was der Unterschied ist? – 5areductase

+0

Sparen Sie einfach auf eine Variable, die nicht erforderlich ist. –

Antwort

4

Sie Code für Swapping ist falsch: Dieser Code

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

sein sollte

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