#include <iostream>
#include <vector>
using namespace std;
template <typename T>
void bubbleSort(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 bubbleSort(vector<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 insertionSort(T arr[], int n) {
for (int i = 1; i <= n - 1; i++) {
T key = arr[i];
int j = i - 1;
while (j >= 0 && arr[j] > key) {
arr[j + 1] = arr[j];
j = j - 1;
}
arr[j + 1] = key;
}
}
template <typename T>
void insertionSort(vector<T>& arr, int n) {
for (int i = 1; i <= n - 1; i++) {
T key = arr[i];
int j = i - 1;
while (j >= 0 && arr[j] > key) {
arr[j + 1] = arr[j];
j = j - 1;
}
arr[j + 1] = key;
}
}
template <typename T>
void printArr(T arr[], int n) {
for (int i = 0; i < n; i++) {
cout << arr[i] << " ";
}
cout << endl;
}
template <typename T>
void printArr(vector<T>& arr, int n) {
for (int i = 0; i < arr.size(); i++) {
cout << arr[i] << " ";
}
cout << endl;
}
int main() {
int arr[] = {5, 2, 4, 1, 3};
int n = 5;
vector<int> vec = {7, 6, 8, 9, 5};
cout << "Изначальный масив ";
printArr(arr, n);
cout << "Изначальный вектор ";
printArr(vec,n);
// Сортування
bubbleSort(arr, n);
insertionSort(vec,n);
cout << "Bubble Sort ";
printArr(arr, n);
cout << "Insertion Sort ";
printArr(vec,n);
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKCnRlbXBsYXRlIDx0eXBlbmFtZSBUPgp2b2lkIGJ1YmJsZVNvcnQoVCBhcnJbXSwgaW50IG4pIHsKICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbiAtIDE7IGkrKykgewogICAgICAgIGZvciAoaW50IGogPSAwOyBqIDwgbiAtIDEgLSBpOyBqKyspIHsKICAgICAgICAgICAgaWYgKGFycltqXSA+IGFycltqICsgMV0pIHsKICAgICAgICAgICAgICAgIFQgdGVtcCA9IGFycltqXTsKICAgICAgICAgICAgICAgIGFycltqXSA9IGFycltqICsgMV07CiAgICAgICAgICAgICAgICBhcnJbaiArIDFdID0gdGVtcDsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KfQoKdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CnZvaWQgYnViYmxlU29ydCh2ZWN0b3I8VD4mIGFyciwgaW50IG4pIHsKICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbiAtIDE7IGkrKykgewogICAgICAgIGZvciAoaW50IGogPSAwOyBqIDwgbiAtIDEgLSBpOyBqKyspIHsKICAgICAgICAgICAgaWYgKGFycltqXSA+IGFycltqICsgMV0pIHsKICAgICAgICAgICAgICAgIFQgdGVtcCA9IGFycltqXTsKICAgICAgICAgICAgICAgIGFycltqXSA9IGFycltqICsgMV07CiAgICAgICAgICAgICAgICBhcnJbaiArIDFdID0gdGVtcDsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KfQoKdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CnZvaWQgaW5zZXJ0aW9uU29ydChUIGFycltdLCBpbnQgbikgewogICAgZm9yIChpbnQgaSA9IDE7IGkgPD0gbiAtIDE7IGkrKykgewogICAgICAgIFQga2V5ID0gYXJyW2ldOwogICAgICAgIGludCBqID0gaSAtIDE7CgogICAgICAgIHdoaWxlIChqID49IDAgJiYgYXJyW2pdID4ga2V5KSB7CiAgICAgICAgICAgIGFycltqICsgMV0gPSBhcnJbal07CiAgICAgICAgICAgIGogPSBqIC0gMTsKICAgICAgICB9CgogICAgICAgIGFycltqICsgMV0gPSBrZXk7CiAgICB9Cn0KCnRlbXBsYXRlIDx0eXBlbmFtZSBUPgp2b2lkIGluc2VydGlvblNvcnQodmVjdG9yPFQ+JiBhcnIsIGludCBuKSB7CgogICAgZm9yIChpbnQgaSA9IDE7IGkgPD0gbiAtIDE7IGkrKykgewogICAgICAgIFQga2V5ID0gYXJyW2ldOwogICAgICAgIGludCBqID0gaSAtIDE7CgogICAgICAgIHdoaWxlIChqID49IDAgJiYgYXJyW2pdID4ga2V5KSB7CiAgICAgICAgICAgIGFycltqICsgMV0gPSBhcnJbal07CiAgICAgICAgICAgIGogPSBqIC0gMTsKICAgICAgICB9CgogICAgICAgIGFycltqICsgMV0gPSBrZXk7CiAgICB9Cn0KCgp0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4Kdm9pZCBwcmludEFycihUIGFycltdLCBpbnQgbikgewogICAgZm9yIChpbnQgaSA9IDA7IGkgPCBuOyBpKyspIHsKICAgICAgICBjb3V0IDw8IGFycltpXSA8PCAiICI7CiAgICB9CiAgICBjb3V0IDw8IGVuZGw7Cn0KCnRlbXBsYXRlIDx0eXBlbmFtZSBUPgp2b2lkIHByaW50QXJyKHZlY3RvcjxUPiYgYXJyLCBpbnQgbikgewogICAgZm9yIChpbnQgaSA9IDA7IGkgPCBhcnIuc2l6ZSgpOyBpKyspIHsKICAgICAgICBjb3V0IDw8IGFycltpXSA8PCAiICI7CiAgICB9CiAgICBjb3V0IDw8IGVuZGw7Cn0KCgppbnQgbWFpbigpIHsKICAgIGludCBhcnJbXSA9IHs1LCAyLCA0LCAxLCAzfTsKICAgIGludCBuID0gNTsKCiAgICB2ZWN0b3I8aW50PiB2ZWMgPSB7NywgNiwgOCwgOSwgNX07CgogICAgY291dCA8PCAi0JjQt9C90LDRh9Cw0LvRjNC90YvQuSDQvNCw0YHQuNCyICI7CiAgICBwcmludEFycihhcnIsIG4pOwoKICAgIGNvdXQgPDwgItCY0LfQvdCw0YfQsNC70YzQvdGL0Lkg0LLQtdC60YLQvtGAICI7CiAgICBwcmludEFycih2ZWMsbik7CgogICAgLy8g0KHQvtGA0YLRg9Cy0LDQvdC90Y8KICAgIGJ1YmJsZVNvcnQoYXJyLCBuKTsKICAgIGluc2VydGlvblNvcnQodmVjLG4pOwoKICAgIGNvdXQgPDwgIkJ1YmJsZSBTb3J0ICI7CiAgICBwcmludEFycihhcnIsIG4pOwoKICAgIGNvdXQgPDwgIkluc2VydGlvbiBTb3J0ICI7CiAgICBwcmludEFycih2ZWMsbik7CgogICAgcmV0dXJuIDA7Cn0=