#include <iostream>
using namespace std;
int b_comparisons = 0;
int i_comparisons = 0;
int i_swaps=0;
int b_swaps=0;
void bubleSort(int arr[],int n){
for (int i = 0;i<n-1;i++){
for (int j=0;j<n-1-i;j++){
b_comparisons++;
if (arr[j]>arr[j+1]){
b_swaps++;
int temp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
}
}
}
}
void instSort(int arr[], int n) {
for (int i = 1; i < n; i++) {
int 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++;
}
}
void printArr(int arr[],int n){
for (int i=0;i<n;i++){
cout<<arr[i]<<" ";
}
}
int main() {
int n=4;
int arr[n]={3,1,5,0};
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;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKCmludCBiX2NvbXBhcmlzb25zID0gMDsKaW50IGlfY29tcGFyaXNvbnMgPSAwOwppbnQgaV9zd2Fwcz0wOwppbnQgYl9zd2Fwcz0wOwoKCnZvaWQgYnVibGVTb3J0KGludCBhcnJbXSxpbnQgbil7Cglmb3IgKGludCBpID0gMDtpPG4tMTtpKyspewoJCWZvciAoaW50IGo9MDtqPG4tMS1pO2orKyl7CgkJCWJfY29tcGFyaXNvbnMrKzsKCQkJaWYgKGFycltqXT5hcnJbaisxXSl7CgkJCQliX3N3YXBzKys7CgkJCQlpbnQgdGVtcD1hcnJbal07CgkJCQlhcnJbal09YXJyW2orMV07CgkJCQlhcnJbaisxXT10ZW1wOwoJCQl9CgkJfQoJfSAKfQoKdm9pZCBpbnN0U29ydChpbnQgYXJyW10sIGludCBuKSB7CiAgICBmb3IgKGludCBpID0gMTsgaSA8IG47IGkrKykgewogICAgICAgIGludCBrZXkgPSBhcnJbaV07CiAgICAgICAgaW50IGogPSBpIC0gMTsKCiAgICAgICAgd2hpbGUgKGogPj0gMCAmJiBhcnJbal0gPiBrZXkpIHsKICAgICAgICAgICAgaV9jb21wYXJpc29ucysrOwogICAgICAgICAgICBhcnJbaiArIDFdID0gYXJyW2pdOwogICAgICAgICAgICBqID0gaiAtIDE7CiAgICAgICAgICAgIGlfc3dhcHMrKzsKICAgICAgICB9CgogICAgICAgIGFycltqICsgMV0gPSBrZXk7CiAgICAgICAgaV9zd2FwcysrOwogICAgfQp9CnZvaWQgcHJpbnRBcnIoaW50IGFycltdLGludCBuKXsKCWZvciAoaW50IGk9MDtpPG47aSsrKXsKCQljb3V0PDxhcnJbaV08PCIgIjsKCX0KfQoJCgoKaW50IG1haW4oKSB7CglpbnQgbj00OwogICAgaW50IGFycltuXT17MywxLDUsMH07CiAgICBpbnQgYXJyMltuXT17Myw0LDcsMX07CiAgICAKICAgIGNvdXQ8PCLQkdGD0LvRjNCx0LDRiNC60L7QstC1Ijw8ZW5kbDsKICAgIGJ1YmxlU29ydChhcnIsbik7CiAgICBwcmludEFycihhcnIsbik7CiAgICAKICAgIGNvdXQ8PGVuZGw8PCAi0JrRltC70YzQutGW0YHRgtGMINC/0LXRgNC10YHRgtCw0L3QvtCy0L7QuiAiIDw8IGJfc3dhcHM8PGVuZGw7CiAgICAKICAgIGNvdXQ8PCAi0JLRgdGC0LDQstC60LDQvNC4ICI8PGVuZGw7CglpbnN0U29ydChhcnIyLG4pOwoJcHJpbnRBcnIoYXJyMixuKTsKCWNvdXQgPDwgZW5kbDw8ItCa0ZbQu9GM0LrRltGB0YLRjCDQv9C10YDQtdGB0YLQsNC90L7QstC+0LogIiA8PCBpX3N3YXBzPDxlbmRsOwoKICAgIHJldHVybiAwOwp9