Skip to content

Commit

Permalink
Merge sort update
Browse files Browse the repository at this point in the history
  • Loading branch information
aarexer committed Jul 20, 2023
1 parent 247dd27 commit 630f07f
Showing 1 changed file with 3 additions and 2 deletions.
5 changes: 3 additions & 2 deletions algorithms/sorting/merge.md
Original file line number Diff line number Diff line change
Expand Up @@ -296,7 +296,7 @@ public class MergeSort {

* На «почти отсортированных» массивах работает столь же долго, как на хаотичных. Существует вариант сортировки слиянием, который работает быстрее на частично отсортированных данных, но он требует дополнительной памяти, в дополнении ко временному буферу, который используется непосредственно для сортировки.

* Накладные расходы: требует дополнительной памяти по размеру исходного массива.
* Накладные расходы: требует дополнительной памяти по размеру исходного массива. [Теоретически](https://www.geeksforgeeks.org/in-place-merge-sort/), можно обойтись без дополнительной памяти, однако это неэффективно, трудно реализуемо и [не рекомендуется](https://stackoverflow.com/questions/2571049/how-to-sort-in-place-using-the-merge-sort-algorithm).

* Рекурсивный подход также можно отнести к минусам, так как сортировка действительно больших (огромных) списков может вызвать накладные расходы на использование стека вызовов. Однако, можно обойтись и без реализации на рекурсии.

Expand All @@ -305,7 +305,7 @@ public class MergeSort {
Для массива из 10 чисел простейший, но имеющий минимальные накладные расходы, алгоритм сложности O(n^2) будет эффективнее, чем быстрый алгоритм сложности O(n*ln(n)): чем меньше объём данных, тем заметнее накладные расходы, требуемые для быстрых алгоритмов. Для примера (очень абстрактного, но все же), сортировка пузырьком 10 чисел заняла у меня 391 нс, в то время как сортировка слиянием отработала за 770 нс. А вот уже начиная с 100 и более числе сортировка пузырьком уступает на порядок: 28202 нс против 7752 нс у merge sort.

Сортировка слиянием - это эффективный алгоритм сортировки, который может быть применен в различных ситуациях в реальной жизни.
Он используется для упорядочивания данных, когда требуется отсортировать большой объем информации.
Он используется для упорядочивания данных, когда требуется отсортировать большой объем информации. Гибридно встречается и в JDK.

Если данные не помещаются в оперативную память компьютера, сортировка слиянием позволяет выполнять сортировку на жестком диске или других внешних носителях данных.

Expand All @@ -322,3 +322,4 @@ public class MergeSort {
5. [Лекторий ФПМИ. Введение в программирование 3. Сортировки. MergeSort, недетерминированный QuickSort](https://www.youtube.com/watch?v=TEsRwziPhbo)
6. [ИТМО. Сортировка слиянием](https://neerc.ifmo.ru/wiki/index.php?title=%D0%A1%D0%BE%D1%80%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%BA%D0%B0_%D1%81%D0%BB%D0%B8%D1%8F%D0%BD%D0%B8%D0%B5%D0%BC)
7. [Habr. Сортировки слиянием](https://habr.com/ru/companies/edison/articles/431964/)
8. [Geeksforgeeks. In-Place Merge Sort](https://www.geeksforgeeks.org/in-place-merge-sort/)

0 comments on commit 630f07f

Please sign in to comment.