Изменения

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

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

347 байт добавлено, 01:23, 16 мая 2011
Нет описания правки
=Слияние 2-х массивов=
Допустим, у нас есть два отсортированных массива А и B размерами <tex>N_a </tex> и <tex>N_b </tex> со­ответственно, и мы хотим объединить их элементы в один большой отсортирован­ный массив C размером <tex>N_a + N_b </tex> . Для этого можно применить процедуру слия­ния, суть которой заключается в повторяющемся «отделении» элемента, наи­меньшего из двух имеющихся в началах исходных массивов, и присоединении это­го элемента к концу результирующего массива. Элементы мы переносим до тех пор, пока один из исходных массивов не закончится. После этого оставшийся «хвост» одного из входных массивов дописывается в конец результирующего мас­сива. Пример работы процедуры показан на рисунке:
[[Файл:Mergearr.png|center|380px500px|thumb|Пример работы процедуры слияния.]]
<br>
Алгоритм слияния формально можно записать следующим образом:
Merge fragments (a,c) and (c + 1,b);
End
 
 
Время работы сортировки слиянием составляет <tex>O(n * ln(n))</tex>. Пример работы процедуры показан на рисунке:
[[Файл:Merge sort1.png|500px|center|thumb|Пример работы рекурсивного алгоритма сортировки слиянием]]
46
правок

Навигация