Почему сортировка не работает? - C (СИ)

Узнай цену своей работы

Формулировка задачи:

кто подскажет в чем проблема.почему не сортирует?
Листинг программы
  1. #include <stdio.h>
  2. int main()
  3. {
  4. int arr[256],size,j,tmp=0;
  5. printf("N=");scanf("%d",&size);
  6. for (int i=0;i<size;i++)
  7. {
  8. printf("x[%d]=",i);
  9. scanf("%d",&arr[i]);
  10. }
  11. int bubbleSort(int* arr, int size);
  12. for (int i=0;i<size;i++){
  13. printf("%d",arr[i]);
  14. }
  15. return 0;
  16. }
  17. void bubbleSort(int* arr, int size)
  18. {
  19. int tmp, i, j;
  20. for(i = 0; i < size-1; ++i)
  21. {
  22. for(j = 0; j < size-1 ; ++j)
  23. {
  24. if (arr[j + 1] < arr[j])
  25. {
  26. tmp = arr[j+1];
  27. arr[j+1] = arr[j];
  28. arr[j] = tmp;
  29. }
  30. }
  31. }
  32. }

Решение задачи: «Почему сортировка не работает?»

textual
Листинг программы
  1. #include <stdio.h>
  2. void bubbleSort(int* arr, int size);
  3. int main()
  4. {
  5. int arr[256],size,j,tmp=0;
  6. printf("N=");scanf("%d",&size);
  7. for (int i=0;i<size;i++)
  8. {
  9. printf("x[%d]=",i);
  10. scanf("%d",&arr[i]);
  11. }
  12. bubbleSort(arr, size);
  13. for (int i=0;i<size;i++){
  14. printf("%d",arr[i]);
  15. }
  16. return 0;
  17. }
  18.  
  19. void bubbleSort(int* arr, int size)
  20. {
  21. int tmp, i, j;
  22. for(i = 0; i < size-1; ++i)
  23. {
  24. for(j = 0; j < size-1 ; ++j)
  25. {
  26. if (arr[j + 1] < arr[j])
  27. {
  28. tmp = arr[j+1];
  29. arr[j+1] = arr[j];
  30. arr[j] = tmp;
  31.             }
  32.         }
  33.     }
  34. }

Объяснение кода листинга программы

В этом коде реализована сортировка массива методом пузырька. Пузырьковая сортировка — это один из простейших алгоритмов сортировки, в котором элементы сравниваются попарно и меняются местами в зависимости от того, какой из них больше. Этот процесс повторяется до тех пор, пока массив не будет отсортирован. Вот что происходит в этом коде:

  1. Сначала объявляются переменные:
    • arr — указатель на массив, который нужно отсортировать.
    • size — размер массива.
    • j — индекс для внешнего цикла.
    • tmp — временная переменная для хранения значения при обменном операторе.
  2. Затем происходит чтение данных из массива с помощью scanf().
  3. После этого вызывается функция bubbleSort(), которая сортирует массив методом пузырька.
  4. Внутри функции bubbleSort() объявляются три переменные:
    • tmp — используется как временная переменная для хранения значения при обменном операторе.
    • i и j — используются как индексы для внутренних циклов.
  5. Внутренний цикл функции bubbleSort() выполняется до тех пор, пока j меньше size-1.
  6. Внутренний цикл выполняет следующие действия:
    • Проверяет, больше ли arr[j+1] arr[j]. Если это так, то меняет их местами с помощью обменного оператора tmp = arr[j+1]; arr[j+1] = arr[j]; arr[j] = tmp;.
    • Увеличивает значение j на 1.
  7. Когда внутренний цикл завершается, увеличивается значение i на 1.
  8. Если i меньше size-1, то внутренний цикл повторяется.
  9. Когда внешний цикл завершается, значения массива выводятся на экран с помощью printf().
  10. Функция main() возвращает 0, что означает успешное выполнение программы.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

10   голосов , оценка 4.3 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы