Изменения

Перейти к: навигация, поиск

Сортировка слиянием

800 байт добавлено, 00:46, 17 мая 2011
Нет описания правки
End
Пример работы алгоритма показан на рисунке:
[[Файл:Merge sort1.png|500px|center|thumb|Пример работы рекурсивного алгоритма сортировки слиянием]]
 
=Время работы=
Чтобы оценить время работы этого алгоритма, составим рекуррентное соотношение. Пускай <tex>T(n)</tex> - время сортировки массива длины n, тогда для сортировки слиянием справедливо <tex>T(n)=2T(n/2)+O(n)</tex>
(<tex>O(n)</tex> - это время, необходимое на то, чтобы слить два массива). Распишем это соотношение:
 
T(n) = 2T(n/2) + O(n) = 4T(n/4) + 2*O(n) = ... = 2kT(1) + kO(n).
Время работы сортировки слиянием составляет Осталось оценить <tex>k</tex>. Мы знаем, что <tex>2k=n</tex>, а значит <tex>k=log(n)</tex>. Уравнение примет вид <tex>T(n)=nT(1)+ log(n)O(n)</tex>. Так как <tex>T(1)</tex> - константа, то <tex>T(n)=O(n\ )+log(n)O(n)=O(nlog(n))</tex>. Пример работы процедуры показан на рисунке:[[Файл:Merge sort1.png|500px|center|thumb|Пример работы рекурсивного алгоритма сортировки слиянием]]
46
правок

Навигация