#include <stdio.h>
#include <stdlib.h>

int* bubbleSort(const int* arr, int size) {
    // Создание копии исходного массива
    int* sortedArr = (int*)malloc(size * sizeof(int));
    if (sortedArr == NULL) {
        // Ошибка при выделении памяти
        return NULL;
    }
    for (int i = 0; i < size; i++) {
        sortedArr[i] = arr[i];
    }
    
    // Сортировка пузырьком
    for (int i = 0; i < size - 1; i++) {
        for (int j = 0; j < size - i - 1; j++) {
            if (sortedArr[j] > sortedArr[j + 1]) {
                // Обмен значениями
                int temp = sortedArr[j];
                sortedArr[j] = sortedArr[j + 1];
                sortedArr[j + 1] = temp;
            }
        }
    }

    return sortedArr;
}

int main() {
    int arr[] = {5, 2, 9, 1, 5, 6};
    int size = sizeof(arr) / sizeof(arr[0]);

    // Вызов функции сортировки
    int* sortedArr = bubbleSort(arr, size);
    if (sortedArr == NULL) {
        printf("Ошибка выделения памяти.\n");
        return 1;
    }

    // Вывод отсортированного массива
    printf("Отсортированный массив: ");
    for (int i = 0; i < size; i++) {
        printf("%d ", sortedArr[i]);
    }
    printf("\n");

    // Удаление копии массива из памяти
    free(sortedArr);

    return 0;
}