Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // AISD_SORTOWANIA.cpp: Określa punkt wejścia dla aplikacji konsoli.
- //
- #include <conio.h>
- #include <malloc.h>
- #include <stdio.h>
- #include <stdlib.h>
- // Sortowanie bąbelkowe
- void SortujBabelkowo(float *tab, const int LiczbaElementow)
- {
- float buff;
- for (int i = 0; i < LiczbaElementow - 1; i++)
- {
- for (int j = 0; j < LiczbaElementow - 1; j++)
- {
- if (tab[j] < tab[j + 1]) // Sortowanie malejące (od największego do najmniejszego elementu)
- // if (tab[j] > tab[j + 1]) // Sortowanie rosnące (od najmniejszego do największego elementu)
- {
- buff = tab[j + 1];
- tab[j + 1] = tab[j];
- tab[j] = buff;
- }
- }
- }
- }
- // QuickSort
- void QuickSort(float *tab, int lewy, int prawy) // lewy - index pierwszego elementu prawy - index ostatniego elementu
- {
- int v = tab[(lewy + prawy) / 2];
- int i, j;
- float buff;
- i = lewy;
- j = prawy;
- do {
- while (tab[i] > v) i++; // Sortowanie malejące (od największego do najmniejszego elementu)
- while (tab[j] < v) j--; // Sortowanie malejące (od największego do najmniejszego elementu)
- // while (tab[i] < v) i++; // Sortowanie rosnące (od najmniejszego do największego elementu)
- // while (tab[j] > v) j--; // Sortowanie rosnące (od najmniejszego do największego elementu)
- if (i <= j) {
- buff = tab[i];
- tab[i] = tab[j];
- tab[j] = buff;
- i++; j--;
- }
- } while (i <= j);
- if (j > lewy) QuickSort(tab, lewy, j);
- if (i < prawy) QuickSort(tab, i, prawy);
- }
- // Sortowanie Przez Wstawianie
- void SortowaniePrzezWstawianie(float *tab, int LiczbaElementow)
- {
- float buff;
- int i; // index
- for (int j = 1; j < LiczbaElementow; j++)
- {
- buff = tab[j];
- i = j - 1;
- while (i >= 0 && buff > tab[i]) // Sortowanie malejące (od największego do najmniejszego elementu)
- // while (i >= 0 && buff < tab[i]) // Sortowanie rosnące (od najmniejszego do największego elementu)
- {
- tab[i + 1] = tab[i];
- tab[i] = buff;
- i--;
- }
- }
- }
- // Sortowanie Przez Wybieranie
- void SortowaniePrzezWybieranie(float *tab, int LiczbaElementow)
- {
- int min; // Index elementu najmniejszego/największego (zależnie od wybranego sortowania)
- float buff;
- for (int i = 0; i < LiczbaElementow; i++)
- {
- min = i;
- for (int j = i + 1; j <= LiczbaElementow - 1; j++)
- {
- if (tab[min] < tab[j]) // Sortowanie malejące (od największego do najmniejszego elementu)
- // if (tab[min] > tab[j]) // Sortowanie rosnące (od najmniejszego do największego elementu)
- {
- min = j;
- }
- }
- buff = tab[i];
- tab[i] = tab[min];
- tab[min] = buff;
- }
- }
- // Sortowanie Koktajlowe
- void SortowanieKoktajlowe(float *tab, int LiczbaElementow)
- {
- bool stan = true;
- float buff;
- while (stan == true)
- {
- for (int i = 1; i < LiczbaElementow; i++)
- {
- if (tab[i - 1] < tab[i]) // Sortowanie malejące (od największego do najmniejszego elementu)
- // if (tab[i - 1] > tab[i]) // Sortowanie rosnące (od najmniejszego do największego elementu)
- {
- buff = tab[i - 1];
- tab[i - 1] = tab[i];
- tab[i] = buff;
- stan = true;
- }
- else stan = false;
- }
- for (int i = LiczbaElementow - 1; i > 0; i--)
- {
- if (tab[i - 1] < tab[i]) // Sortowanie malejące (od największego do najmniejszego elementu)
- // if (tab[i - 1] > tab[i]) // Sortowanie rosnące (od najmniejszego do największego elementu)
- {
- buff = tab[i - 1];
- tab[i - 1] = tab[i];
- tab[i] = buff;
- stan = true;
- }
- else stan = false;
- }
- }
- }
- int main()
- {
- const int n = 6;
- float tab[n];
- tab[0] = 3;
- tab[1] = 5;
- tab[2] = 1;
- tab[3] = 3;
- tab[4] = 9;
- tab[5] = -2;
- //Przed posortowaniem
- for (int i = 0; i < n; i++) {
- printf("%4.1f ", tab[i]);
- }
- printf("\n");
- printf("\n");
- // SortujBabelkowo(tab, n);
- // QuickSort(tab, 0, n - 1);
- // SortowaniePrzezWstawianie(tab, n);
- // SortowaniePrzezWybieranie(tab, n);
- // SortowanieKoktajlowe(tab, n);
- //Po posortowaniu
- for (int i = 0; i < n; i++) {
- printf("%4.1f ", tab[i]);
- }
- getch();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement