139
правок
Изменения
→Слияние двух массивов
===Слияние двух массивов===
[[Файл:Mergearr.png|right|300px|thumb|Пример работы процедуры слияния.]]
У нас есть два массива <tex>A</tex> и <tex>B</tex>. Нам надо получить массив <tex>C</tex> размером <tex>sizeof(A) + sizeof(B)</tex>. Для этого можно применить процедуру слияния. Эта процедура заключается в том, что мы сравниваем элементы массивов (начиная с начала) и меньший из них записываем в финальный. И затем, в массиве у которого оказался меньший элемент, переходим к следующему элементу и сравниваем теперь его. В конце, если один из массивов закончился, мы просто дописываем в финальный другой массив. После мы наш финальный массив записываем заместо двух исходных и получаем отсортированный участок.
Алгоритм слияния формально можно записать следующим образом:
<pre>// слияние двух массивов с помощью временного
// left - левая граница, right - правая, middle - серединаmerge(array a, int left, int middle, int right) // left - левая граница, right - правая, middle - середина
array b = a[middle, right];
i = left, j = middle, k = 0;