Run Code
|
API
|
Code Wall
|
Misc
|
Feedback
|
Login
|
Theme
|
Privacy
|
Patreon
Sortowanie przez scalanie
#include <iostream> #define LOG(arg) clog << arg #define INDENT for(int i=0; i<=4*poziom; ++i) LOG(' ') using namespace std; void sort(int tab[], const int poczatek, const int koniec, const int poziom=0) { const int il = koniec-poczatek; INDENT; LOG("BGN: " << poczatek << " END: " << koniec << endl); if(il<=1) return; else { INDENT; LOG("DOSTALEM: "); for(int i=poczatek; i<koniec; ++i) LOG(tab[i] << " "); LOG(endl); const int srednia = (poczatek+koniec)/2; sort(tab, poczatek, srednia, poziom+1); sort(tab, srednia, koniec, poziom+1); int tym[50]; int lewy=poczatek, prawy=srednia, rezultat=poczatek; for(;; rezultat++) { INDENT; LOG("WYBIERAM SPOSROD: " << tab[lewy] << " " << tab[prawy] << endl); if(tab[lewy]<tab[prawy]) { INDENT; LOG("PRZETWARZAM: " << tab[lewy] << endl); tym[rezultat]=tab[lewy]; //przerzuc mniejsza do tym lewy++; //zajmij sie nastepnym elementem z przdedzialu if(lewy==srednia) { //w tym przedziale juz wszystko zrobione for(rezultat++; prawy<koniec; prawy++, rezultat++) {//przerzuc do tym INDENT; LOG("ZAPISUJE: " << tab[lewy] <<endl ); tym[rezultat]=tab[prawy]; //to co zostalo w drugim przedziale } break; //nie ma juz nic do zrobienia, opuscmy petle dla bezpieczenstwa } } else { INDENT; LOG("PRZETWARZAM: " << tab[prawy] << endl); tym[rezultat]=tab[prawy]; prawy++; if(prawy==koniec) { for(rezultat++; lewy<srednia; lewy++, rezultat++) { INDENT; LOG("ZAPISUJE: " << tab[lewy] <<endl ); tym[rezultat]=tab[lewy]; } break; } } } INDENT; LOG("ZWRACAM: "); for( int i=poczatek; i<koniec; ++i) { tab[i]=tym[i]; LOG(tab[i] << " "); } LOG(endl); } } int main() { int il, tab[50]; cout << "Podaj liczbe liczb do posortowania: "; cin >> il; if(il>50) { cout << "Podales liczbe wieksza niz zakladalem"<<endl; return EXIT_FAILURE; } cout<< "Wypisz liczby do posortowania "; for(int i=0; i<il; i++) cin>> tab[i]; sort(tab, 0, il); for(int i=0; i<il; i++) cout<< tab[i]<<endl; return 0; }
run
|
edit
|
history
|
help
0
FindMissingLagrange
Days in month database using unordered_map
Coin changes
pangram
Even Odd using Functions
remove_copy_if-30-Seconds-of-C++
VirtualRestoPoint
Metodos
GenericPacker
random lotto number game