Сортировка пузырьком Страница 2. Упрощение алгоритма сортировки пузырьком
|
Страница 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]; // сортировка Sort(col_el);
// вывод cout << "Result is :"<<endl; Out(col_el); cin >> col_el;
return 0; }
Суть упрощения заключается в том, что используется дополнительная булева переменная F. При каждом заходе в первый цикл ей присваивается значение false и, если в процессе выполнения один из элементов будет не отсортирован, то значение этой переменной меняется на true и первый цикл продолжается дальше. В противном случае, если значение не поменялось, то это значит, что уже нечего сортировать.
Данная сортировка выполняет n*(n-1)*(n-2)*...*(2)*(1) операций (в худшем случае). |