Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #define ROSNACO 0
- #define MALEJACO 1
- // ostatni parametr funkcji maksimum jest zdefiniowany jako wskaźnik, co w tym
- // wypadku nie oznacza, że jest on tablicą tylko pojedynczą wartością do odczytu i zapisu
- int minimum(int* tab, int dlugosc, int* poczatek)
- {
- int m = tab[*poczatek];
- for (int i = (*poczatek) + 1; i < dlugosc; i++)
- {
- if (m > tab[i])
- {
- m = tab[i];
- *poczatek = i;
- }
- }
- return m;
- }
- // ostatni parametr funkcji minimum jest zdefiniowany jako wskaźnik, co w tym
- // wypadku nie oznacza, że jest on tablicą tylko pojedynczą wartością do odczytu i zapisu
- int maksimum(int* tab, int dlugosc, int* poczatek)
- {
- int m = tab[*poczatek];
- for (int i = (*poczatek) + 1; i < dlugosc; i++)
- {
- if (m < tab[i])
- {
- m = tab[i];
- *poczatek = i;
- }
- }
- return m;
- }
- // https://www.geeksforgeeks.org/selection-sort/
- void sortuj(int* tab, int dlugosc, int kierunek)
- {
- for (int i = 0; i < dlugosc; i++)
- {
- int element, j;
- j = i;
- if (kierunek == ROSNACO)
- {
- element = minimum(tab, dlugosc, &j);
- }
- else
- {
- element = maksimum(tab, dlugosc, &j);
- }
- tab[j] = tab[i];
- tab[i] = element;
- }
- }
- int main()
- {
- int tab[100];
- char kierunek[2];
- int n;
- scanf("%d", &n);
- scanf("%s", kierunek);
- for (int i = 0; i < n; i++)
- {
- scanf("%d", &tab[i]);
- }
- if (kierunek[0] == 'r')
- {
- sortuj(tab, n, ROSNACO);
- // printf("ROSNACO\n");
- }
- else
- {
- sortuj(tab, n, MALEJACO);
- // printf("MALEJACO\n");
- }
- for (int i = 0; i < n; i++)
- {
- printf("%d ", tab[i]);
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement