2017-10-21 78 views
-4

Après la compilation, il n'y a pas de sortie. Je n'arrive pas à comprendre le problème. De plus, il n'y a pas d'erreurs lors de la compilation.Tri d'un tableau dans l'ordre croissant. Après la compilation, il n'y a pas de sortie. Je n'arrive pas à comprendre la question.

#include<stdio.h> 
void main(void) 
{ 
    int a[] = {5,4,3,2,1}; 
    int i,j,min,b[5]; 
    min = a[0]; 
    for(i=0;i<sizeof(a);i++) 
    { 
     if(a[i]<min) 
     { 
      j = a[i]; 
      a[i] = min; 
      min = j; 
     } 
     b[i] = min; 
    } 
    for(i=0;i<sizeof(b);i++) 
    { 
     printf("%d,",b[i]); 
    } 
} 
+3

Indice: sizeof (b) n'est pas 5. – gnasher729

+3

Votre algorithme de tri est bidon - c'est comme ça qu'une bulle typique ressemble. Jetez un oeil à [wikipedia] (https://en.wikipedia.org/wiki/Bubble_sort). 'sizeof (a)' donne la taille du tableau 'a' dans * octets *. Pour obtenir le nombre d'éléments dans 'a', vous devez le diviser par' sizeof a [0] '. La même chose s'applique à 'sizeof (b)'. – usr

+0

'void main' est faux. 'main' devrait retourner' int'. – melpomene

Répondre

1

Modifier ceci:

sizeof(a) 

à ceci:

sizeof(a)/sizeof(a[0]) 

depuis sizeof opérateur donne la taille du tableau a en octets, et non le nombre d'éléments que vous désirez. Donc vous divisez par la taille d'un élément du tableau en octets (tous les éléments d'un tableau ont la même taille), ce qui vous donne le nombre d'éléments.

Idem pour sizeof(b).


Votre algorithme ne semble pas tout à fait correct. Je vous suggère de jeter un oeil à la pseudocode of Bubble sort.


PS: What should main() return in C and C++? Un int.