Доброго всем времени суток!
Толковое объяснение, что это такое на wiki:
https://ru.wikipedia.org/wiki/Сортировка_пузырьком
Вот мой вариант кода:
#include <stdio.h> #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 вниз, выше границы обработки массива не происходит).
Эти улучшения дело конечно хорошее, но лучше стало буквально на чуть-чуть. Дикого прироста производительности я не ощутил.