Ответ
Сложность зависит от алгоритма:
- Bubble Sort, Insertion Sort, Selection Sort: O(n²) в худшем и среднем случае. Простые, но неэффективные для больших массивов.
# Пример Bubble Sort
def bubble_sort(arr):
n = len(arr)
for i in range(n):
for j in range(0, n-i-1):
if arr[j] > arr[j+1]:
arr[j], arr[j+1] = arr[j+1], arr[j]
-
Merge Sort, Heap Sort: O(n log n) в худшем и среднем случае. Эффективны для больших данных, но требуют дополнительной памяти (Merge Sort) или сложны в реализации (Heap Sort).
-
Quick Sort: O(n log n) в среднем, но O(n²) в худшем случае (редко, если опорный элемент выбирается плохо). На практике часто быстрее других из-за малых констант.
-
Tim Sort (используется в Python, Java): O(n log n) в худшем случае. Гибрид Merge Sort и Insertion Sort, оптимизирован для реальных данных.
Для почти отсортированных данных Insertion Sort может быть близок к O(n).