Пример. Сортировка пузырьком. Название этого метода произошло от известного физического явления - пузырек воздуха в воде поднимается вверх. В этом методе сначала поднимается "наверх" (к началу массива) самый "легкий" элемент (минимальный), затем следующий и т.д. Делается это так. Сравниваем последний элемент с предпоследним. Если они стоят неправильно, то меняем их местами. Далее так же рассматриваем следующую пару элементов и т.д. Когда мы обработали пару A[0]-A[1], минимальный элемент стоит на месте A[0]. Это значит, что на следующих этапах его можно не рассматривать.
При следующем проходе наша задача - поставить на место элемент A[1]. Делаем это так же, но уже не рассматриваем A[0], который стоит на своем месте. Сделав N-1 проходов, мы установим на место элементы A[0]-A[N-2]. Это значит, что последний элемент уже тоже стоит на своем месте. Метод пузырька работает медленно, особенно на больших массивах. Доказано, что при увеличении размера массива в 10 раз время выполнения программы увеличивается в 100 раз (метод имеет порядок N2). К сожалению, все простые алгоритмы сортировки имеют такой (квадратичный) порядок.
#include < stdio.h >
const N = 10;
void main()
{
int i, j, A[N], c;
// ввод массива A
for ( i = 0; i < N-1; i ++ )
for ( j = N-2; j >= i; j -- )
if ( A[j] > A[j+1] )
{
c = A[j]; A[j] = A[j+1];
A[j+1] = c;
}
printf("\n Отсортированный массив:\n”);
for ( i = 0; i < N; i ++ )
printf("%d ", A[i]);
}
for (int i = 0; i < 6; i++) {
for (int i2 = i; i2 < 5; i2++)
{
int a;
if (m1[i2] > m1[i2 + 1])
{
a = m1[i2]; m1[i2] = m1[i2 + 1]; m1[i2 + 1]=a;
}
}
}