Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <ctime>
- #include <iostream>
- #define MAX 50 //zmieniamy z zależności od wielkości tablicy
- #include <string>
- #include <cstdlib>
- #include <algorithm>
- using namespace std;
- void show(int *tab)
- {
- for(int i = 0; i < MAX; i++)
- {
- cout << tab[i] << "||";
- }
- }
- void sort_reverse(int *tab)
- {
- sort(tab, tab + MAX, greater< int >()); // sortowanie malejące (na potrzeby testów)
- }
- void sort_increase(int * tab)
- {
- sort(tab,tab + MAX); //sortowanie rosnące (na potrzeby testów)
- }
- int main()
- {
- srand(time(NULL));
- int tab[MAX], flag;
- for (int i = 0; i < MAX; i++)
- {
- tab[i] = rand() % (4*MAX-1)+ 0; //wypełniamy tablicę losowymi liczbami
- cout << tab[i] << " ";
- if ((i + 1) % 5 == 0)
- {
- cout << endl;
- }
- }
- //sort_increase(tab); //funkcja sortujaca rosnaca, na potrzeby testow
- sort_reverse(tab); //funkcjo sortuajca malejaco, na potrzeby testow
- //bool is_sorted = false; //sprawdzanie, czy tablica jest posortowana (nie jest)
- int z=0;
- int counter_swap = 0; //licznik przestawień
- int counter_if = 0; //licznik porównań
- int k,temp,n;
- for(int i=0; i<(n-1); i++)
- {
- counter_if++;
- if(tab[i+1]<tab[i]) //Sprawdzamy czy element na nastepnej pozycji jest mniejszy od obencego.
- {
- k = i;
- while(tab[i+1]<tab[k]) //Wtedy zliczamy do poczatku ile jest mniejszych elementow
- { //Zmienna k to wskaznik odpowiedniego miejsca.
- k--;
- }
- if(k==i){
- swap(tab[i], tab[i+1]); //Jezeli element przesuwamy tylko o jedno miejsce,
- //poprostu zamieniamy dwa sasiadujace.
- counter_swap++;
- }
- else //W innym wypadku, kopiujemy element do tempa, przesuwamy
- { // wszytskie elementy w prawo, i wsadzamy go w odpowiednie miejsce.
- temp = tab[i+1];
- for(int l=i+1; l>k; l--)
- {
- tab[l] = tab[l-1];
- }
- tab[k+1] = temp;
- }
- }
- //wyswietl(tab, 8);
- }
- cout << "Zamiany: "<<counter_swap<< endl;
- cout << "Porownania: "<<counter_if << endl;
- show(tab);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement