fork download
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. int* bubbleSort(const int* arr, int size) {
  5. // Создание копии исходного массива
  6. int* sortedArr = (int*)malloc(size * sizeof(int));
  7. if (sortedArr == NULL) {
  8. // Ошибка при выделении памяти
  9. return NULL;
  10. }
  11. for (int i = 0; i < size; i++) {
  12. sortedArr[i] = arr[i];
  13. }
  14.  
  15. // Сортировка пузырьком
  16. for (int i = 0; i < size - 1; i++) {
  17. for (int j = 0; j < size - i - 1; j++) {
  18. if (sortedArr[j] > sortedArr[j + 1]) {
  19. // Обмен значениями
  20. int temp = sortedArr[j];
  21. sortedArr[j] = sortedArr[j + 1];
  22. sortedArr[j + 1] = temp;
  23. }
  24. }
  25. }
  26.  
  27. return sortedArr;
  28. }
  29.  
  30. int main() {
  31. int arr[] = {5, 2, 9, 1, 5, 6};
  32. int size = sizeof(arr) / sizeof(arr[0]);
  33.  
  34. // Вызов функции сортировки
  35. int* sortedArr = bubbleSort(arr, size);
  36. if (sortedArr == NULL) {
  37. printf("Ошибка выделения памяти.\n");
  38. return 1;
  39. }
  40.  
  41. // Вывод отсортированного массива
  42. printf("Отсортированный массив: ");
  43. for (int i = 0; i < size; i++) {
  44. printf("%d ", sortedArr[i]);
  45. }
  46. printf("\n");
  47.  
  48. // Удаление копии массива из памяти
  49. free(sortedArr);
  50.  
  51. return 0;
  52. }
Success #stdin #stdout 0s 5272KB
stdin
Standard input is empty
stdout
Отсортированный массив: 1 2 5 5 6 9