Advertisement
Guest User

Untitled

a guest
Jul 2nd, 2015
198
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.17 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. /**
  5.  * Funkcja wyswietlajaca tablice
  6.  */
  7. void printArray(int tab[], int n)
  8. {
  9.     int i = 0;
  10.     printf("[ ");
  11.     for (i = 0; i < n - 1; i++)
  12.         printf("%d, ", tab[i]);
  13.  
  14.     printf("%d ]\n", tab[n - 1]);
  15. }
  16.  
  17. /**
  18.  * Funkcja wypelniajaca tablice liczbami losowymi w zakresie min-max
  19.  */
  20. void fillRandom(int tab[], int n, int min, int max)
  21. {
  22.     srand(time(NULL));
  23.     int i = 0;
  24.     for (i = 0; i < n; i++)
  25.     {
  26.         tab[i] = (rand() % max) + min;
  27.     }
  28. }
  29.  
  30. /**
  31.  * Sortowanie metoda "flagi polskiej"
  32.  */
  33. void sort01(int tab[], int n)
  34. {
  35.     int l = 0;
  36.     int p = n - 1;
  37.  
  38.     while (l < p)
  39.     {
  40.         while (l < p && tab[l] == 0) l++;
  41.         while (l < p && tab[p] == 1) p--;
  42.  
  43.         if (l < p)
  44.         {
  45.             int x = tab[l];
  46.             tab[l] = tab[p];
  47.             tab[p] = x;
  48.  
  49.             l++;
  50.             p--;
  51.         }
  52.     }
  53. }
  54.  
  55. /**
  56.  * Sortowanie metoda "flagi francuskiej"
  57.  */
  58. void sort012(int tab[], int n)
  59. {
  60.     int Lo, Mid, Hi, x;
  61.     Lo = 0;
  62.     Mid = 0;
  63.     Hi = n - 1;
  64.     while (Mid <= Hi)
  65.     {
  66.         if (tab[Mid] == 0)
  67.         {
  68.             x = tab[Lo];
  69.             tab[Lo] = tab[Mid];
  70.             tab[Mid] = x;
  71.             Lo++;
  72.             Mid++;
  73.         }
  74.         else if (tab[Mid] == 1) Mid++;
  75.         else
  76.         {
  77.             x = tab[Mid];
  78.             tab[Mid] = tab[Hi];
  79.             tab[Hi] = x;
  80.             Hi--;
  81.         }
  82.     }
  83. }
  84.  
  85. int main()
  86. {
  87.     const int n = 10; // dlugosc tablic
  88.     const int w = 1; // 1 - wyswietla tablice, 0 - nie wyswietla tablic (tylko czasy)
  89.     int t[n], t2[n];
  90.     int s, f;
  91.  
  92.     fillRandom(t, n, 0, 2); // wypelnianie tablicy wartosiami z zakresu 0-1
  93.     fillRandom(t2, n, 0, 3); // wypelnianie tablicy wartosiami z zakresu 0-2
  94.  
  95.     if (w) printArray(t, n);
  96.     if (w) printArray(t2, n);
  97.     printf("\n");
  98.  
  99.     s = time(NULL);
  100.     sort01(t, n);
  101.     f = time(NULL);
  102.     if (w) printArray(t, n);
  103.     printf("Sortowanie  01: %d s\n", f - s);
  104.  
  105.     s = time(NULL);
  106.     sort012(t2, n);
  107.     f = time(NULL);
  108.     if (w) printArray(t2, n);
  109.     printf("Sortowanie 012: %d s\n", f - s);
  110.  
  111.     return 0;
  112. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement