Объясните пожалуйста часть кода.Пузырьковая сортировка - C (СИ)
Формулировка задачи:
Нашел код по пузырьковой сортировке,не могу понять,почему во втором цикле именно такое условие (пока j<kolvo-i-1)
kolvo-количество элементов в сортируемом массиве .Объясните пожалуйста
вот допустим 5 элементов
i=0
j=0 пока 0<5-0-1 производим(не производим)обмен 0 элемента;
j=1 пока 1<5-0-1 производим(не производим)обмен 1 элемента;
j=2 пока 2<5-0-1 производим(не производим)обмен 2 элемента;
j=3 пока 3<5-0-1 производим(не производим)обмен 3 элемента;
i=1
j=0 пока 0<5-1-1 производим(не производим)обмен 0 элемента;
j=1 пока 1<5-1-1 производим(не производим)обмен 1 элемента;
j=2 пока 2<5-1-1 производим(не производим)обмен 2 элемента;
i=2
j=0 пока 0<5-2-1 производим(не производим)обмен 0 элемента;
j=1 пока 1<5-2-1 производим(не производим)обмен 1 элемента;
i=3
j=0 пока 0<5-3-1 производим(не производим)обмен 0 элемента;
i=4
....
что я не так понимаю?
for(i = 0 ; i < kolvo; i++) { scanf("%d", &a[i]); } for(i = 0 ; i < kolvo ; i++) { for(j = 0 ; j < kolvo - i - 1 ; j++) { // сравниваем два соседних элемента. if(a[j] > a[j+1]) { // если они идут в неправильном порядке, то int obmen = a[j]; a[j] = a[j+1] ; a[j+1] = obmen; // меняем их местами. } } }
Решение задачи: «Объясните пожалуйста часть кода.Пузырьковая сортировка»
textual
Листинг программы
#include <stdio.h> main() { int mass[5] = {5, 4 , 3, 2, 1}, i, j, size; for(i = 1; i <= 4; i++) // за один шаг мы меняем местами только один элемент за раз, для достижения цели надо сделать проходов 3 раза for(j = 0; j <= 3; j++) // проверить каждый элемент массива if(mass[j] > mass[j + 1]){ // сравниваеться если первый элемент массива больше чем второй тогда выполняется условия if size = mass[j]; // присваиваем первый элемент массива переменной size mass[j] = mass[j + 1]; // присваиваем первому элементу массива второй mass[j + 1] = size; // присваиваем второму элементу массива первый (который до этого мы сохранили в переменную size) } for(i = 0; i <= 4; i++) printf("%d ", mass[i]); }
Объяснение кода листинга программы
- В первой строке определяется размер массива
mass
равным 5. - Затем в цикле
for
перебираются все элементы массиваmass
. - Внутри цикла проверяется, больше ли текущий элемент массива
mass
чем следующий за ним. - Если это условие выполняется, то текущий элемент присваивается переменной
size
, а следующий элемент присваивается первому элементу массива. - После этого,
size
присваивается второму элементу массива. - В конце программы выводятся все элементы массива
mass
с помощью функцииprintf
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д