Почему сортировка не работает? - C (СИ)
Формулировка задачи:
кто подскажет в чем проблема.почему не сортирует?
#include <stdio.h> int main() { int arr[256],size,j,tmp=0; printf("N=");scanf("%d",&size); for (int i=0;i<size;i++) { printf("x[%d]=",i); scanf("%d",&arr[i]); } int bubbleSort(int* arr, int size); for (int i=0;i<size;i++){ printf("%d",arr[i]); } return 0; } void bubbleSort(int* arr, int size) { int tmp, i, j; for(i = 0; i < size-1; ++i) { for(j = 0; j < size-1 ; ++j) { if (arr[j + 1] < arr[j]) { tmp = arr[j+1]; arr[j+1] = arr[j]; arr[j] = tmp; } } } }
Решение задачи: «Почему сортировка не работает?»
textual
Листинг программы
#include <stdio.h> void bubbleSort(int* arr, int size); int main() { int arr[256],size,j,tmp=0; printf("N=");scanf("%d",&size); for (int i=0;i<size;i++) { printf("x[%d]=",i); scanf("%d",&arr[i]); } bubbleSort(arr, size); for (int i=0;i<size;i++){ printf("%d",arr[i]); } return 0; } void bubbleSort(int* arr, int size) { int tmp, i, j; for(i = 0; i < size-1; ++i) { for(j = 0; j < size-1 ; ++j) { if (arr[j + 1] < arr[j]) { tmp = arr[j+1]; arr[j+1] = arr[j]; arr[j] = tmp; } } } }
Объяснение кода листинга программы
В этом коде реализована сортировка массива методом пузырька. Пузырьковая сортировка — это один из простейших алгоритмов сортировки, в котором элементы сравниваются попарно и меняются местами в зависимости от того, какой из них больше. Этот процесс повторяется до тех пор, пока массив не будет отсортирован. Вот что происходит в этом коде:
- Сначала объявляются переменные:
arr
— указатель на массив, который нужно отсортировать.size
— размер массива.j
— индекс для внешнего цикла.tmp
— временная переменная для хранения значения при обменном операторе.
- Затем происходит чтение данных из массива с помощью
scanf()
. - После этого вызывается функция
bubbleSort()
, которая сортирует массив методом пузырька. - Внутри функции
bubbleSort()
объявляются три переменные:tmp
— используется как временная переменная для хранения значения при обменном операторе.i
иj
— используются как индексы для внутренних циклов.
- Внутренний цикл функции
bubbleSort()
выполняется до тех пор, покаj
меньшеsize-1
. - Внутренний цикл выполняет следующие действия:
- Проверяет, больше ли
arr[j+1]
arr[j]
. Если это так, то меняет их местами с помощью обменного оператораtmp = arr[j+1]; arr[j+1] = arr[j]; arr[j] = tmp;
. - Увеличивает значение
j
на 1.
- Проверяет, больше ли
- Когда внутренний цикл завершается, увеличивается значение
i
на 1. - Если
i
меньшеsize-1
, то внутренний цикл повторяется. - Когда внешний цикл завершается, значения массива выводятся на экран с помощью
printf()
. - Функция
main()
возвращает 0, что означает успешное выполнение программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д