Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <ctime>
- #include <stdlib.h>
- using namespace std;
- const int N = 11;
- int kopiec[N] = {15,12,11,10,11,8,5,3,7,2,9}; //przykładowy kopiec
- void print(int tab[], int n)
- {
- for(int i = 0; i< n; i++)
- cout<< tab[i] << " ";
- cout<<endl;
- }
- void zanurzanie(int tab[], int i, int rozmiar)
- {
- int wiekszy;
- int lewy = 2*i + 1;
- int prawy = 2*i + 2;
- if(lewy < rozmiar && tab[lewy] > tab[i])
- wiekszy = lewy;
- else
- wiekszy = i;
- if(prawy < rozmiar && tab[prawy] > tab[wiekszy])
- wiekszy = prawy;
- if(wiekszy != i)
- {
- swap(tab[i], tab[wiekszy]);
- zanurzanie(tab, wiekszy, rozmiar);
- }
- }
- void wynurzanie(int tab[], int i)
- {
- if(i > 0)
- {
- int ojciec = (i-1)/2;
- if(tab[i] > tab[ojciec])
- {
- swap(tab[i], tab[ojciec]);
- wynurzanie(tab, ojciec);
- }
- }
- }
- const int K = 5;
- int rozmiarKolejki = 0;
- int kolejka[K] = {0};
- void insert(int i)
- {
- if(rozmiarKolejki < K)
- {
- kolejka[rozmiarKolejki] = i;
- wynurzanie(kolejka, rozmiarKolejki);
- rozmiarKolejki++;
- }
- }
- int extract()
- {
- if(rozmiarKolejki<1)
- cout<<"Kolejka pusta"<<endl;
- else
- {
- cout<<"[-]: ";
- rozmiarKolejki--;
- swap(kolejka[0], kolejka[rozmiarKolejki]);
- kolejka[rozmiarKolejki]= 0;
- zanurzanie(kolejka,0, K);
- }
- }
- int wywolaj_kolejke()
- {
- insert(12);
- print(kolejka, K);
- insert(15);
- print(kolejka, K);
- insert(10);
- print(kolejka, K);
- insert(3);
- print(kolejka, K);
- extract();
- print(kolejka, K);
- extract();
- print(kolejka, K);
- insert(7);
- print(kolejka, K);
- insert(5);
- print(kolejka, K);
- insert(9);
- print(kolejka, K);
- insert(11);
- print(kolejka, K);
- extract();
- print(kolejka, K);
- extract();
- print(kolejka, K);
- extract();
- print(kolejka, K);
- extract();
- print(kolejka, K);
- extract();
- print(kolejka, K);
- extract();
- print(kolejka, K);
- }
- const int S = 20;
- int sortowanie[S];
- void wstaw()
- {
- srand(time(NULL));
- for(int i = 0 ; i < S ; i++)
- sortowanie[i] = rand()%10;
- print(sortowanie, S);
- }
- void sortuj(int rozmiar)
- {
- wstaw();
- //twoerzenie kopca
- for(int i = (rozmiar-1)/2; i>=0; i--)
- zanurzanie(sortowanie, i, rozmiar);
- for(int i = rozmiar-1; i>0; i--)
- {
- swap(sortowanie[0], sortowanie[i]);
- rozmiar--;
- zanurzanie(sortowanie, 0, rozmiar);
- }
- print(sortowanie, S);
- }
- int main(){
- sortuj(S);
- return 0;
- }
Add Comment
Please, Sign In to add comment