#include <iostream>
using namespace std;
int b_comparisons = 0;
int i_comparisons = 0;
int i_swaps=0;
int b_swaps=0;
void bubbleSort(int arr[], int n) {
for (int i = 0; i < n - 1; i++) {
bool changed = false;
b_comparisons++;
for (int j = 0; j < n - 1 - i; j++) {
b_swaps++;
if (arr[j] > arr[j + 1]) {
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
changed = true;
}
}
if (!changed) break;
}
}
void insertionSort(int arr[], int n) {
for (int i = 1; i < n; i++) {
int current = arr[i];
int j = i - 1;
i_comparisons++;
while (j >= 0) {
i_swaps++;
if (arr[j] > current) {
arr[j + 1] = arr[j];
j--;
} else {
break;
}
}
arr[j + 1] = current;
}
}
void printArray(int arr[], int n) {
for (int i = 0; i < n; i++)
cout << arr[i] << " ";
cout << endl;
}
int main() {
int original[] = {5, 3, 8, 4, 2};
int n = 5;
int arrBubble[5], arrInsertion[5];
for (int i = 0; i < n; i++) {
arrBubble[i] = original[i];
arrInsertion[i] = original[i];
}
bubbleSort(arrBubble, n);
insertionSort(arrInsertion, n);
cout << "Бульбашкове сортування "<< endl;
printArray(arrBubble, n);
cout << "Кількість порівнянь: " << b_comparisons<< " "<< b_swaps << endl;
cout << "Сортування вставками ";
printArray(arrInsertion, n);
cout << "Кількість порівнянь " << i_comparisons<<" "<< i_swaps << endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKCmludCBiX2NvbXBhcmlzb25zID0gMDsKaW50IGlfY29tcGFyaXNvbnMgPSAwOwppbnQgaV9zd2Fwcz0wOwppbnQgYl9zd2Fwcz0wOwoKCnZvaWQgYnViYmxlU29ydChpbnQgYXJyW10sIGludCBuKSB7CiAgICBmb3IgKGludCBpID0gMDsgaSA8IG4gLSAxOyBpKyspIHsKICAgICAgICBib29sIGNoYW5nZWQgPSBmYWxzZTsKICAgICAgICBiX2NvbXBhcmlzb25zKys7IAogICAgICAgIGZvciAoaW50IGogPSAwOyBqIDwgbiAtIDEgLSBpOyBqKyspIHsKICAgICAgICAgICAgYl9zd2FwcysrOyAKICAgICAgICAgICAgaWYgKGFycltqXSA+IGFycltqICsgMV0pIHsKICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICBpbnQgdGVtcCA9IGFycltqXTsKICAgICAgICAgICAgICAgIGFycltqXSA9IGFycltqICsgMV07CiAgICAgICAgICAgICAgICBhcnJbaiArIDFdID0gdGVtcDsKICAgICAgICAgICAgICAgIGNoYW5nZWQgPSB0cnVlOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGlmICghY2hhbmdlZCkgYnJlYWs7CiAgICB9Cn0KCnZvaWQgaW5zZXJ0aW9uU29ydChpbnQgYXJyW10sIGludCBuKSB7CiAgICBmb3IgKGludCBpID0gMTsgaSA8IG47IGkrKykgewogICAgICAgIGludCBjdXJyZW50ID0gYXJyW2ldOwogICAgICAgIGludCBqID0gaSAtIDE7CgkJaV9jb21wYXJpc29ucysrOwogICAgICAgIHdoaWxlIChqID49IDApIHsKICAgICAgICAgICAgaV9zd2FwcysrOwogICAgICAgICAgICBpZiAoYXJyW2pdID4gY3VycmVudCkgewogICAgICAgICAgICAgICAgYXJyW2ogKyAxXSA9IGFycltqXTsKICAgICAgICAgICAgICAgIGotLTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBhcnJbaiArIDFdID0gY3VycmVudDsKICAgIH0KfQoKdm9pZCBwcmludEFycmF5KGludCBhcnJbXSwgaW50IG4pIHsKICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbjsgaSsrKQogICAgICAgIGNvdXQgPDwgYXJyW2ldIDw8ICIgIjsKICAgIGNvdXQgPDwgZW5kbDsKfQoKaW50IG1haW4oKSB7CiAgICBpbnQgb3JpZ2luYWxbXSA9IHs1LCAzLCA4LCA0LCAyfTsKICAgIGludCBuID0gNTsKCiAgICBpbnQgYXJyQnViYmxlWzVdLCBhcnJJbnNlcnRpb25bNV07CiAgICBmb3IgKGludCBpID0gMDsgaSA8IG47IGkrKykgewogICAgICAgIGFyckJ1YmJsZVtpXSA9IG9yaWdpbmFsW2ldOwogICAgICAgIGFyckluc2VydGlvbltpXSA9IG9yaWdpbmFsW2ldOwogICAgfQoKICAgIGJ1YmJsZVNvcnQoYXJyQnViYmxlLCBuKTsKICAgIGluc2VydGlvblNvcnQoYXJySW5zZXJ0aW9uLCBuKTsKICAgIAogICAgY291dCA8PCAi0JHRg9C70YzQsdCw0YjQutC+0LLQtSDRgdC+0YDRgtGD0LLQsNC90L3RjyAiPDwgZW5kbDsKICAgIHByaW50QXJyYXkoYXJyQnViYmxlLCBuKTsKICAgIGNvdXQgPDwgItCa0ZbQu9GM0LrRltGB0YLRjCDQv9C+0YDRltCy0L3Rj9C90Yw6ICIgPDwgYl9jb21wYXJpc29uczw8ICIgIjw8IGJfc3dhcHMgPDwgZW5kbDsKCiAgICBjb3V0IDw8ICLQodC+0YDRgtGD0LLQsNC90L3RjyDQstGB0YLQsNCy0LrQsNC80LggIjsKICAgIHByaW50QXJyYXkoYXJySW5zZXJ0aW9uLCBuKTsKICAgIGNvdXQgPDwgItCa0ZbQu9GM0LrRltGB0YLRjCDQv9C+0YDRltCy0L3Rj9C90YwgIiA8PCBpX2NvbXBhcmlzb25zPDwiICI8PCBpX3N3YXBzIDw8IGVuZGw7CgogICAgcmV0dXJuIDA7Cn0K