Отсортировать массив методом пузырька - C (СИ) (72923)
Формулировка задачи:
Всем Доброго времени суток, нужно написать програму в С(Си), которая методом обмена "пузырьки" упорядочивает по убыванию одномерный массив.
Тоесть нужно ввести свои цифры в консоле, а програма должна их упорядчить и вивести.
Почитал, понял что нужно каждный елемент сравнивать с предыдущим, но как это реализовать? на форуме много тем по этому, но не нашел что-нибудь подходящего.
через for наверно это надо делать?
заранее спасибо.
int arr[20];
Решение задачи: «Отсортировать массив методом пузырька»
textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
int A[10];
int i,j,t,f;
FILE *g; //файл
for (i=0; i<10; i++)
{
printf("A[%d]=",i);
scanf("%d",&A[i]);
}
while (1)
{
f=0;
for (i=0; i<9; i++)
if (A[i] < A[i+1])
{
t=A[i]; A[i]=A[i+1]; A[i+1]=t; f=1;
}
if (f==0) break;
}
g=fopen("D:\\puzirki.txt","a+"); //открываем файл
for (i=0; i<10; i++)
{ printf("%d ",A[i]);
fprintf(g,"%d\n",A[i]); //пишем в файл
}
fclose(g); //закрываем файл
system("PAUSE");
return 0;
}
Объяснение кода листинга программы
- Подключение необходимых библиотек для работы с файлами и стандартным вводом/выводом
- Объявление переменных: массив A, индексы i, j, флаг f, т, файл g
- Заполнение массива A с помощью ввода с клавиатуры
- Бесконечный цикл, который будет выполняться до тех пор, пока массив не будет отсортирован по возрастанию
- Перебираем массив и сравниваем значения элементов. Если текущий элемент меньше следующего, меняем их местами и устанавливаем флаг f в значение 1
- Проверяем значение флага f. Если массив отсортирован, выходим из цикла
- Открываем файл
D:\\puzirki.txtв режиме добавления информации - Перебираем массив и выводим его значения на экран, а также записываем их в файл
- Закрываем файл
- Завершаем программу с помощью команды system(
PAUSE)