Пузырьковая сортировка - 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 будет отсортирован в порядке возрастания.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д