Суть: Попарное сравнение соседних элементов, которое позволяет текущему, «лучшему» элементу «всплыть».
[https://github.com/il-bychkov/algorithms](https://lh7-us.googleusercontent.com/i1aCrgq8ihUHbqqb2PXTXCiDdYz4qRPgAiP662db-P7MraPphc4VLXzczg3c94S_cQiC0TGWkWFQaOpfbYkYLTWowW9YalabYgkcKD-C_RZpk1auhmxrbI5Ko2ONoC3rOqzk-G1i6MJQpER5KcWXrg)
https://github.com/il-bychkov/algorithms
while (!noSwapsDone) {
noSwapsDone = true;
for (int i = 0; i < n - 1; i++) {
if (arr[i] > arr[i+1]) {
swap(arr[i], arr[i+1]);
noSwapsDone = false;
}
}
}
Сложность по времени:
Лучший случай: $O(n)$ массив уже отсортирован, над каждым элементом, кроме первого будет производиться одна операция, итог: n-1
Средний случай: $O(n^2)$
Худший случай: $O(n^2)$ все числа идут не в нужном порядке (например, отсортированы по противоположному критерию), над каждым элементом будет производиться как минимум по 1 операции, но может это происходить несколько раз, итог: n*(n-1)/2 = O(n^2)