Алгоритъм за сливане на две наредени редици
Описаният алгоритъм за сливане на две наредени редици е валиден за две предварително сортирани както във възходящ ред, така и в низходящ ред. Предварително се знаят броят на елементите във всяка от редиците P1, P2, както и вида на наредбата им. Броят на елементите в новата (третата) редица ще бъде P = P1 + P2. Използват се допълнително две променливи M1, M2 съдържащи поредния номер елемент за всяка от редиците. Стъпките на алгоритъма са следните:
1) Сравняват се поредните елементи от двете редици с номер M1 и M2.2) Ако елементът с номер М1 е по-малък или равен от елементът с номер М2 в третата редица се записва елементът с номер М1. Променливата М1 увеличава стойността си с 1.
Ако елементът с номер М1 е по-голям от елементът с номер М2 в третата редица се записва елементът с номер М2. Променливата М2 увеличава стойността си с 1.
3) Проверява се дали М1<Р1. Ако е да отива на стъпка 5), ако е не на стъпка 1).
4) Проверява се дали М2<Р2. Ако е да отива на стъпка 6), ако е не на стъпка 1).
5) Прехвърлят се останалите елементи от редица 2 в редица 3. Отива на стъпка 7.
6) Прехвърлят се останалите елементи от редица 1 в редица 3. Отива на стъпка 7.
7) Край на алгоритъма.
Следващата примерна програма дава решена задача за сливане на две наредени редици. Редиците са представени като стойности в два едномерни масива.
Да се състави програма, която като входни данни има 2 едномерни сортирани масива, съдържащи естествени числа от интервала [-5000 + 5000]. В общия случай двата масива са с различен брой елементи.
Да се изведе на екрана резултата от обединението на 2-та масива като елементите на новообразувания масив са също сортирани.
Пример:
{1,3,5,7,9,11,113} и {2,4,6,8,10,12,14,16,18,20}
Изход:
1,2,3,4,5,6,7,8,9,10,11,12,14,16,18,20,113
Обяснени и решени задачи с подобни алгоритми, функции и служебни думи са разгледани в страницата с електронни уроци по информатика - програмиране.
Илюстриране работата на характерни алгоритми можете да намерите в предоставените електронни помагала съдържащи решени задачи, примери.