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