Advertisement
Guest User

Untitled

a guest
Jan 24th, 2020
90
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.87 KB | None | 0 0
  1. #include <stdio.h>
  2.  
  3. #define ROSNACO 0
  4. #define MALEJACO 1
  5.  
  6. // ostatni parametr funkcji maksimum jest zdefiniowany jako wskaźnik, co w tym
  7. // wypadku nie oznacza, że jest on tablicą tylko pojedynczą wartością do odczytu i zapisu
  8. int minimum(int* tab, int dlugosc, int* poczatek)
  9. {
  10.     int m = tab[*poczatek];
  11.     for (int i = (*poczatek) + 1; i < dlugosc; i++)
  12.     {
  13.         if (m > tab[i])
  14.         {
  15.             m = tab[i];
  16.             *poczatek = i;
  17.         }
  18.     }
  19.     return m;
  20. }
  21.  
  22. // ostatni parametr funkcji minimum jest zdefiniowany jako wskaźnik, co w tym
  23. // wypadku nie oznacza, że jest on tablicą tylko pojedynczą wartością do odczytu i zapisu
  24. int maksimum(int* tab, int dlugosc, int* poczatek)
  25. {
  26.     int m = tab[*poczatek];
  27.     for (int i = (*poczatek) + 1; i < dlugosc; i++)
  28.     {
  29.         if (m < tab[i])
  30.         {
  31.             m = tab[i];
  32.             *poczatek = i;
  33.         }
  34.     }
  35.     return m;
  36. }
  37.  
  38. // https://www.geeksforgeeks.org/selection-sort/
  39. void sortuj(int* tab, int dlugosc, int kierunek)
  40. {
  41.     for (int i = 0; i < dlugosc; i++)
  42.     {
  43.         int element, j;
  44.  
  45.         j = i;
  46.         if (kierunek == ROSNACO)
  47.         {
  48.             element = minimum(tab, dlugosc, &j);
  49.         }
  50.         else
  51.         {
  52.             element = maksimum(tab, dlugosc, &j);
  53.         }
  54.         tab[j] = tab[i];
  55.         tab[i] = element;
  56.     }
  57. }
  58.  
  59. int main()
  60. {
  61.     int tab[100];
  62.     char kierunek[2];
  63.     int n;
  64.     scanf("%d", &n);
  65.     scanf("%s", kierunek);
  66.     for (int i = 0; i < n; i++)
  67.     {
  68.         scanf("%d", &tab[i]);
  69.     }
  70.     if (kierunek[0] == 'r')
  71.     {
  72.         sortuj(tab, n, ROSNACO);
  73.         // printf("ROSNACO\n");
  74.     }
  75.     else
  76.     {
  77.         sortuj(tab, n, MALEJACO);
  78.         //  printf("MALEJACO\n");
  79.     }
  80.  
  81.     for (int i = 0; i < n; i++)
  82.     {
  83.         printf("%d ", tab[i]);
  84.     }
  85.  
  86.  
  87.  
  88.  
  89.     return 0;
  90. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement