Сортировка пузырьком - <font color=
ОГЛАВЛЕНИЕ
Страница 2 из 2
Упрощение алгоритма сортировки пузырьком
Это можно упростить до следующего вида:
#include <iostream>
using namespace std;
int array[200];
// сортировка
void Sort(int col)
{
int trash=0;
bool f=true;
for (int i=1; (i<=col) && (f=true) ; i++)
{
f=false;
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;
f=true;
}
}
}
}
// вывод
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];
// сортировкаСуть упрощения заключается в том, что используется дополнительная булева переменная F. При каждом заходе в первый цикл ей присваивается значение false и, если в процессе выполнения один из элементов будет не отсортирован, то значение этой переменной меняется на true и первый цикл продолжается дальше. В противном случае, если значение не поменялось, то это значит, что уже нечего сортировать.
Sort(col_el);
// вывод
cout << "Result is :"<<endl;
Out(col_el);
cin >> col_el;
return 0;
}
Данная сортировка выполняет n*(n-1)*(n-2)*...*(2)*(1) операций (в худшем случае).