Изменения

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

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

357 байт добавлено, 01:17, 16 мая 2011
Нет описания правки
Алгоритм слияния формально можно записать следующим образом:
a = 0; b = 0; While (a < <tex>n_a</tex>) and (b < <tex>n_b</tex>) If A[a] <tex>\leqslant</tex> B[b] C[a + b] = A[a]; a = a + 1; Else C[Файл:Merge1.png|center|380px|thumba + b]= B[b]; b = b + 1; End; End; If a <<tex>n_a</tex> Copy remain part of A Else Copy remain part of B End; 
=Рекурсивный алгоритм=
Проще всего формализовать этот алгоритм рекурсивным способом. Функ­ция сортирует участок массива от элемента с номером a до элемен­та с номером b:
[[Файл:Merge2.png|center|380px|thumb]] Function MergeSort(a,b) If b = a then Exit; c = (a + b)/2; Mergesort(a,c); MergeSort(c + 1,b); Merge fragments (a,c) and (c + 1,b); End
46
правок

Навигация