
Доброго всем времени суток!
Толковое объяснение, что это такое на wiki:
https://ru.wikipedia.org/wiki/Сортировка_пузырьком
Вот мой вариант кода:
#include <stdlib.h>
int Mass[1000];
int determination(void);
int buble_sort(void);
void printing(void);
int main()
{
determination();
buble_sort();
printing();
return 0;
}
int determination(void)// функция присвоения значений массиву
{
for (int i = 0; i <= 999; i++)
{
Mass[i] = rand() % 3000;
}
}
int buble_sort(void)// функция упорядочения массива
{
int tmp = 0;
for (int i = 0; i <= 999; i++)
{
for (int j = 999; j > i; j--)
{
if (Mass[j] < Mass[j - 1]) //
{
tmp = Mass[j - 1]; //
Mass[j - 1] = Mass[j]; //
Mass[j] = tmp; //
}
}
}
}
void printing(void)// функция вывода массива на экран
{
for (int i = 0; i <= 999; i++)
{
printf("%d\t%d\n", i + 1, Mass[i]);
}
}
Программа разбита на функции.
Функция determination присваивает значения массива Mass[1000] используя функцию rand() (псевдослучайные числа от 0 до 3000).
Функция buble_sort - функция с применением сабжа. Начиная с 1000-го значения массива функция ищет минимальное значение и перемещает его "вверх" к 1-й ячейке массива.
С функцией printing все понятно.
Желаю удачи!
Комментарии
улучшения
Я попробовал улучшить алгоритм: 1 поставил счетчик перестановок, 2 добавил флаг перестановок(если флаг показывает, что перестановок не было, значит зачем далее совершать проходы (на 1000 значений массива это сэкономило 1 проход)), 3 добавил переменную границы массива (после каждого прохода граница смещается на 1 вниз, выше границы обработки массива не происходит).
Эти улучшения дело конечно хорошее, но лучше стало буквально на чуть-чуть. Дикого прироста производительности я не ощутил.