Пузырьковая сортировка - C (СИ) (70707)
Формулировка задачи:
Добрый день, подскажите, почему в этой программе никогда не срабатывает цикл, мы никогда не входим в него? Заранее спасибо.
#include <stdio.h>
void main(void)
{
int a = 0;
int array[10];
int tmp = 0;
for (int i = 0; i < 10; i++)
{
scanf_s("%d", &a);
array[i] = a;
}
for (int i = 0; i < 10; i++)
{
for (int i = 0; i < 10; i++){
if (array[i] > array[i++]) //эта проверка не срабатывает
{
tmp = array[i];
array[i] = array[i++];
array[i + 1] = tmp;
}
}
}
for (int i = 0; i < 10; i++)
{
printf("%d ", array[i]);
}
scanf_s("%d,", &a);
}Решение задачи: «Пузырьковая сортировка»
textual
Листинг программы
void main(void)
{
int a = 0;
int array[10];
int tmp = 0;
for (int i = 0; i < 10; i++)
{
scanf_s("%d", &a);
array[i] = a;
}
while (1)
{
a=0;
for (int i = 0; i < 9; i++)
{
if (array[i] > array[i+1])
{
tmp = array[i];
array[i] = array[i+1];
array[i + 1] = tmp;
a=1;
}
}
if (a==0) break;
}
for (int i = 0; i < 10; i++)
{
printf("%d ", array[i]);
}
scanf_s("%d,", &a);
}
Объяснение кода листинга программы
- В начале кода объявлены три переменные: a, array и tmp. Значение переменной a равно 0, а массив array содержит 10 элементов. Значение переменной tmp также равно 0.
- Далее, с помощью цикла for происходит заполнение массива array значениями, которые вводятся пользователем. Для этого используется функция scanf_s, которая принимает в качестве аргумента адрес переменной a и считывает в неё значение, введенное пользователем.
- После заполнения массива array значениями, происходит сортировка массива с помощью цикла while. В начале каждого прохода в цикле, переменной a присваивается значение 0.
- Затем, с помощью цикла for происходит сравнение элементов массива array. Если текущий элемент больше следующего, то они меняются местами, а переменной a присваивается значение 1.
- Если после прохода по всем элементам массива значение переменной a осталось равным 0, значит массив уже отсортирован, и выполнение программы завершается.
- В конце программы выводится отсортированный массив с помощью цикла for и функции printf. Значение переменной a, которое было последним введенным пользователем, считывается с помощью функции scanf_s.