ulvis.paste.net - pastebin

Paste Search Dynamic
Recent pastes
bubble sort
  1. /* CAPITOLO 7 es 14 - Crea una funzione per riordinare in ordine alfabetico
  2.  * una lista di parole. Seconda versione semplificata, sempre basata sull'
  3.  * algoritmo di ordinamento "bubble sort".
  4.  */
  5. #include <stdio.h>
  6. #define TRUE  1
  7. #define FALSE 0                            
  8.                                            
  9. // Determina quale di due parole viene prima
  10. int isBigger(char *word1, char *word2)            
  11. {
  12.   while(*word1 && *word2)
  13.   {
  14.     if(*word1 > *word2)
  15.       return true;
  16.     else if(*word1 < *word2)
  17.       return false;
  18.     word1++;
  19.     word2++;  
  20.   }
  21.   return false;
  22. }
  23.  
  24. // Riordina in ordine alfabetico una lista di parole passate
  25. void alphaSort(char **words, int size)
  26. {
  27.   int sorted = false, toSort = size, passate = 0, x;
  28.   char *temp;
  29.    
  30.   while(!sorted)
  31.   {
  32.     sorted = true; // Ipotizza che le parole siano già ordinate
  33.     for(x = 0; x < toSort - 1; x++)              
  34.     {
  35.       if( isBigger( *(words + x), *(words + x + 1) ) )
  36.       {
  37.         temp = *(words + x);              
  38.         *(words + x) = *(words + x + 1);  
  39.         *(words + x + 1) = temp;      
  40.         sorted = false; // Non erano ordinate
  41.       }
  42.     }
  43.     passate++;
  44.     toSort--;
  45.   }
  46.   printf("Fatto. Ho effettuato %d passate.\n", passate);    
  47. }
  48.  
  49. int main(void)
  50. {
  51.   char *myWords[] = {"Tecniche", "Nuove", "June", "1995", "Issue", "PC Format",
  52.                      "Isola del tesoro", "Isaia", "PC Play", "guide",
  53.                      "internet", "all", "Selma", "about", "Seek", "Destroy",
  54.                      "September", "terminal", "velocity", "numero", "notebook",
  55.                      "Linux", "Ideale", "ninja turtles", "monitor", "Speciale",
  56.                      "Sicurezza", "pratico", "C", "manuale", "storia", "del",
  57.                      "Cinema", "tascabile", "Moby dick", "Doctor Sleep",
  58.                      "Stephen King", "Kindle", "Halloween", "programmazione",
  59.                      "informatica", "fisica"};
  60.   int size = sizeof(myWords) / sizeof(char *), x;
  61.  
  62.   alphaSort((char **)myWords, size);
  63.  
  64.   printf("\nmyWords:\n---------------------\n");
  65.   for(x = 0; x < size; x++)
  66.     printf("%s\n", myWords[x]);
  67.  
  68.   return 0;
  69. }
Parsed in 0.015 seconds