#include <iostream>
using namespace std;
int b_comparisons = 0;
int i_comparisons = 0;
int i_swaps=0;
int b_swaps=0;
template <typename T>
void bubleSort(T arr[],int n){
for (int i = 0;i<n-1;i++){
for (int j=0;j<n-1-i;j++){
if (arr[j]>arr[j+1]){
T temp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
}
}
}
}
template <typename T>
void instSort(T arr[],int n) {
for (int i = 1; i < n; i++) {
T key = arr[i];
int j = i - 1;
while (j >= 0 && arr[j] > key) {
i_comparisons++;
arr[j + 1] = arr[j];
j = j - 1;
i_swaps++;
}
arr[j + 1] = key;
i_swaps++;
}
}
template<typename T>
void printArr(T arr[],int n){
for (int i=0;i<n;i++){
cout<<arr[i]<<" ";
}
}
int main() {
int n=4;
double arr[n]={2.5,5.3,5.2,3};
int arr2[n]={3,4,7,1};
cout<<"Бульбашкове"<<endl;
bubleSort(arr,n);
printArr(arr,n);
cout<<endl<< "Кількість перестановок " << b_swaps<<endl;
cout<< "Вставками "<<endl;
instSort(arr2,n);
printArr(arr2,n);
cout << endl<<"Кількість перестановок " << i_swaps<<endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKCmludCBiX2NvbXBhcmlzb25zID0gMDsKaW50IGlfY29tcGFyaXNvbnMgPSAwOwppbnQgaV9zd2Fwcz0wOwppbnQgYl9zd2Fwcz0wOwoKdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CnZvaWQgYnVibGVTb3J0KFQgYXJyW10saW50IG4pewoJZm9yIChpbnQgaSA9IDA7aTxuLTE7aSsrKXsKCQlmb3IgKGludCBqPTA7ajxuLTEtaTtqKyspewoJCQlpZiAoYXJyW2pdPmFycltqKzFdKXsKCQkJCVQgdGVtcD1hcnJbal07CgkJCQlhcnJbal09YXJyW2orMV07CgkJCQlhcnJbaisxXT10ZW1wOwoJCQkJCgkJCX0KCQl9Cgl9IAp9Cgp0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4Kdm9pZCBpbnN0U29ydChUIGFycltdLGludCBuKSB7CiAgICBmb3IgKGludCBpID0gMTsgaSA8IG47IGkrKykgewogICAgICAgIFQga2V5ID0gYXJyW2ldOwogICAgICAgIGludCBqID0gaSAtIDE7CgogICAgICAgIHdoaWxlIChqID49IDAgJiYgYXJyW2pdID4ga2V5KSB7CiAgICAgICAgICAgIGlfY29tcGFyaXNvbnMrKzsKICAgICAgICAgICAgYXJyW2ogKyAxXSA9IGFycltqXTsKICAgICAgICAgICAgaiA9IGogLSAxOwogICAgICAgICAgICBpX3N3YXBzKys7CiAgICAgICAgfQoKICAgICAgICBhcnJbaiArIDFdID0ga2V5OwogICAgICAgIGlfc3dhcHMrKzsKICAgIH0KfQp0ZW1wbGF0ZTx0eXBlbmFtZSBUPgp2b2lkIHByaW50QXJyKFQgYXJyW10saW50IG4pewoJZm9yIChpbnQgaT0wO2k8bjtpKyspewoJCWNvdXQ8PGFycltpXTw8IiAiOwoJfQp9CgkKCgppbnQgbWFpbigpIHsKCWludCBuPTQ7CiAgICBkb3VibGUgYXJyW25dPXsyLjUsNS4zLDUuMiwzfTsKICAgIGludCBhcnIyW25dPXszLDQsNywxfTsKICAgIAogICAgY291dDw8ItCR0YPQu9GM0LHQsNGI0LrQvtCy0LUiPDxlbmRsOwogICAgYnVibGVTb3J0KGFycixuKTsKICAgIHByaW50QXJyKGFycixuKTsKICAgIAogICAgY291dDw8ZW5kbDw8ICLQmtGW0LvRjNC60ZbRgdGC0Ywg0L/QtdGA0LXRgdGC0LDQvdC+0LLQvtC6ICIgPDwgYl9zd2Fwczw8ZW5kbDsKICAgIAogICAgY291dDw8ICLQktGB0YLQsNCy0LrQsNC80LggIjw8ZW5kbDsKCWluc3RTb3J0KGFycjIsbik7CglwcmludEFycihhcnIyLG4pOwoJY291dCA8PCBlbmRsPDwi0JrRltC70YzQutGW0YHRgtGMINC/0LXRgNC10YHRgtCw0L3QvtCy0L7QuiAiIDw8IGlfc3dhcHM8PGVuZGw7CgogICAgcmV0dXJuIDA7Cn0=