Объясните пожалуйста часть кода.Пузырьковая сортировка - 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]);
 
}

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

  1. В первой строке определяется размер массива mass равным 5.
  2. Затем в цикле for перебираются все элементы массива mass.
  3. Внутри цикла проверяется, больше ли текущий элемент массива mass чем следующий за ним.
  4. Если это условие выполняется, то текущий элемент присваивается переменной size, а следующий элемент присваивается первому элементу массива.
  5. После этого, size присваивается второму элементу массива.
  6. В конце программы выводятся все элементы массива mass с помощью функции printf.

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


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

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

14   голосов , оценка 3.929 из 5
Похожие ответы