Сортування злиттям
1: Що таке сортування злиттям?
Сортування злиттям — це алгоритм сортування, який базується на принципі "Розділяй та володарюй". Він розбиває масив на дві частини, рекурсивно сортує кожну частину, а потім зливає дві відсортовані частини в один відсортований масив.
1.1: Як працює сортування злиттям?
Алгоритм сортування злиттям має такі кроки:
- Розділення: Масив рекурсивно розділяється навпіл доти, доки не залишаться окремі елементи.
- Сортування: Окремі елементи відсортовуються за допомогою простого вставного сортування.
- Злиття: Відсортовані частини зливаються в один відсортований масив шляхом упорядкованого порівняння та вибору елементів.
- Повторення: и 1-3 повторюються для всіх підмасивів, поки весь масив не буде відсортовано.
2: Псевдокод сортування злиттям
merge_sort(arr, start, end):
if start < end:
mid = (start + end) // 2 # Знаходимо середину
merge_sort(arr, start, mid) # Рекурсивний виклик для першої половини
merge_sort(arr, mid + 1, end) # Рекурсивний виклик для другої половини
merge(arr, start, mid, end) # Злиття двох відсортованих половин
2.1: Функція злиття (merge)
Функція злиття поєднує дві відсортовані частини масиву:
merge(arr, start, mid, end):
left_arr = arr[start:mid + 1] # Ліва відсортована частина
right_arr = arr[mid + 1:end + 1] # Права відсортована частина
i = 0
j = 0
k = start
while i < len(left_arr) and j < len(right_arr): if left_arr[i] <= right_arr[j]: arr[k] = left_arr[i] i += 1 else: arr[k] = right_arr[j] j += 1 k += 1while i < len(left_arr): arr[k] = left_arr[i] i += 1 k += 1while j < len(right_arr): arr[k] = right_arr[j] j += 1 k += 1
3: Часова складність
Часова складність сортування злиттям становить O(n log n), де n — кількість елементів у масиві.
4: Переваги сортування злиттям
- Гарантує стабільність, тобто однаковий порядок повторюваних елементів зберігається.
- Ефективно працює на великих масивах.
- Не залежить від порядку вхідних даних.
5: Недоліки сортування злиттям
- Займає додатковий простір у пам'яті, оскільки створює копію масиву під час злиття.
- Може бути повільним для малих масивів.
Сортування злиттям — це ефективний та стабільний алгоритм сортування, який добре підходить для великих масивів. Він простий у реалізації та гарантує сортування за O(n log n).
Часті запитання
- Що таке принцип "Розділяй та володарюй"?
- У чому різниця між сортуванням злиттям та сортуванням швидким вибором?
- Чи можна сортувати масив, що містить неповторювані елементи, за допомогою сортування злиттям?
- Як поліпшити часову складність сортування злиттям?
- Які інші алгоритми сортування можна використовувати для сортування великих масивів?