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