Почему сортировка пузырьком идет так долго?
#include <iostream>
using namespace std;
int main () {
int n;
cin >> n;
int array[n];
int z = 0;
// input
for(int i = 0; i < n; i++) {
int temp;
cin >> temp;
array[i] = temp;
}
//sorting
while(z != n-1) {
for(int i = 0; i <= n-1; i++) {
if(array[i] > array[i+1]) {
swap(array[i], array[i+1]);
}
else {
z++;
}
}
}
//output
for(int i = 0; i < n; i++) {
cout << array[i] << " ";
}
}
Написал(сам) алгоритм сортировки пузырьком. Работает очень странно. В связи с этим вопрос. Если я ошибся, то где? Если нет, то неужели у этого алгоритма такое чудовищное время выполнения?
Ответы (1 шт):
Автор решения: tratatarus
→ Ссылка
Рекомендовал бы делать чуть по другому. Обычная сортировка пузырьком выглядит примерно так:
// Сортировка массива пузырьком
for (int i = 0; i < n - 1; i++) {
for (int j = 0; j < n - i - 1; j++) {
if (array[j] > array[j + 1]) {
// меняем элементы местами
int temp = array[j];
array[j] = array[j + 1];
array[j + 1] = temp;
}
}
}