Сортировка пузырьком


Самая простая сортировка (так называемый "пузырек").  Отсортируем с ее помощью массив:

17 9 6 14 19 5

Проходим от первого элемента до последнего и сравниваем соседние элементы. Если слева больше, то меняем их местами (таким образом, справа всегда будет больший). После такого преобразования будет такое :
9 6 14 17 5 | 19 - 19 уже отсортировано, теперь можно проходить не до конца, а на один элемент меньше.

После второй операции :
6 9 14 5 | 17 19 - Потом :
6 9 5 | 14 17 19
6 5 | 9 14 17 19
5 | 6 9 14 17 19
Вот и все. Исходный код сортировки приведен ниже.

#include <iostream>
using namespace std;

// наш массив
int array[100];

// сортировка
void Sort(int col)
{
// временная переменная для хранения промежуточного результата
int trash=0;

// пока не равно количеству елементов
for (int i=1; i<=col ; i++)
{
// пока не равно col-i
for (int j=1; j<=col-i; j++)
{
// если левый элемент больше
if (array [j]>array [j+1])
{
// правого, то меняем их местами
trash=array[j];
array [j]=array [j+1];
array [j+1]=trash;
}
}
}
}

// вывод на экран нашего массива после сортировки
void Out(int col)
{
for (int i=1; i<=col; i++)
cout << array [i] <<" ";
cout << endl;
}

int main()
{
int col_el;

cout << " Enter length of array"<< endl;
// считываем количество элементов
cin >> col_el;
// считываем элементы массива
for (int n=1; n<=col_el ; n++)
cin >> array[n];

Sort(col_el);
// сортируем их
cout << "Result is :"<<endl;
// и выводим
Out(col_el);
// ждем нажатия клавиши
cin >> col_el;

return 0;
}

Данная программа не доделана до конца, в частности нет проверки на выход за пределы массива и прочее.  Заводим массив на 200 элементов, затем считываем количество элементов вызываем процедуру сортировки.

 
« Предыдущая статья   Следующая статья »