Пузырьковая сортировка - C (СИ) (74476)
Формулировка задачи:
Добрый день,
Подскажите где ошибся, не могу понять:
Листинг программы
- #include <stdio.h>
- int main ()
- {
- int a[]={4,7,72,13};
- int i;
- int tmp;
- for(i = 0 ; i < 4 ; i++)
- {
- if (a[i] < a[i+1])
- {
- int tmp = a[i]; a[i] = a[i+1] ; a[i+1] = tmp;
- }
- printf("%d\n", a[i]);
- }
- return 0;
- }
Решение задачи: «Пузырьковая сортировка»
textual
Листинг программы
- for(j = 0 ; j <sizeof(a)/sizeof(a[0]-1 ; j++)
- {
- for(i = sizeof(a)/sizeof(a[0]-1 ; i >j ; i--)
- if (a[i] < a[i-1])
- {
- int tmp = a[i];
- a[i] = a[i-1] ;
- a[i-1] = tmp;
- }
Объяснение кода листинга программы
- Первый цикл for начинается с переменной j равной 0 и условием, чтобы оно выполнялось пока j меньше количества элементов в массиве a деленного на размер одного элемента в массиве (sizeof(a)/sizeof(a[0])).
- Второй цикл for начинается с переменной i равной размеру массива a деленного на размер одного элемента в массиве (sizeof(a)/sizeof(a[0])) и условием, чтобы он выполнялся пока i больше j.
- Внутри второго цикла проверяется условие, если текущий элемент массива a больше следующего элемента (a[i] < a[i-1]).
- Если условие выполняется, то создается временная переменная tmp и присваивается ей значение текущего элемента массива a.
- Значение текущего элемента массива a заменяется на значение следующего элемента массива a.
- Значение следующего элемента массива a заменяется на значение временной переменной tmp.
- В результате этих действий, элементы массива a, которые были перепутаны местами, меняются местами в правильном порядке.
- После выполнения второго цикла, значение переменной j увеличивается на 1.
- Циклы for повторяются до тех пор, пока значение переменной j меньше количества элементов в массиве a.
- В результате выполнения циклов for, массив a будет отсортирован в порядке возрастания.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д