#include #include #include #include #include #include #include #include #include using namespace std; template void print(vector sez) { for (T x : sez) cout << x << " "; cout << endl; } void selection_sort(vector &sez) { int n=sez.size(); for (int i=0; i &sez) { int n=sez.size(); for (int i=1;i=0 && sez[j]>x) { sez[j+1] = sez[j]; j--; } sez[j+1] = x; } } void bubble_sort(vector &sez) { int n=sez.size(); bool change=true; while (change) { change = false; for (int i=0;i+1sez[i+1]) { swap(sez[i], sez[i+1]); change = true; } } } } void bubble_sort_n(vector &sez) { int n=sez.size(); for (int it=0;itsez[i+1]) { swap(sez[i], sez[i+1]); } } } } vector merge(vector &a, vector &b) { int i=0, j=0; vector c; while (i merge_sort(vector &sez) { int n=sez.size(); if (n<=1) return sez; vector levo(sez.begin(), sez.begin()+n/2); vector desno(sez.begin()+n/2, sez.end()); levo = merge_sort(levo); desno = merge_sort(desno); return merge(levo, desno); } int main() { //vector sez = {9,4,2,8,7,5}; //selection_sort(sez); //insertion_sort(sez); //bubble_sort(sez); //bubble_sort_n(sez); //sez = merge_sort(sez); vector sez; default_random_engine rnd(123); for (int i=0;i<1000000;i++) sez.push_back(rnd()%1000000); //insertion_sort(sez); sez = merge_sort(sez); return 0; }