Начиная с первых элементов массивов A и B, сравниваем элементы A[i] и B[j]. В массив C пересылаем больший из них, например, A[i] (если выполняется условие A[i]>=B[j]).
· Далее продолжаем пересылать в массив C элементы массива A (индекс j при этом не меняется), пока очередной элемент массива Aне будет меньше B[j] (условие A[i] >=B[j] не выполняется).
· Тогда начинаем пересылать в массив C элементы массива B (индекс i при этом не меняется), пока для какого-либо элемента массива B не будет снова выполнено условие (A[i] >=B[j]).
· Если один из массивов исчерпан (выполнено условие i > n или j > m), то оставшиеся элементы другого массива пересылаются друг за другом без всяких проверок.
Реализовать алгоритм самостоятельно.
14. Инвертирование массива
· Требуется изменить порядок следования элементов массива размером n на обратный, т.е. поменять местами нулевой элемент массива с (n – 1)-м, первый с (n – 2)-м, i-й с (n – (i+1))-м. Последними нужно поменять местами средние элементы, т.е. (n/2)-й и (n/2 + 1)-й.
15. Циклический сдвиг
· Требуется переместить элементы массива А размера n на m позиций вправо. При этом m элементов из конца массива перемещаются в начало:
А = (a1, a2, a3, a4, a5) – исходный массив;
A = (a4, a5, a1, a2, a3) – после циклической перестановки на 2 позиции вправо.
Вариант 1. Используется вспомогательный массив для временного хранения m последних элементов массива А. Далее оставшиеся элементы с нулевого по (n – m – 1)-й смещаются вправо на m позиций. (Заметим, что перемещение нужно начинать с последнего из перемещаемых элементов, чтобы не испортить элементы массива А.) После этого в первые m элементов пересылаются элементы вспомогательного массива.
Вариант 2. Циклический сдвиг осуществляется с использованием одной вспомогательной переменной, в которую каждый раз пересылается последний элемент массива А, после чего все элементы сдвигаются вправо на 1 позицию (начиная с конца), и на место первого элемента помещается значение вспомогательной переменной. Эта процедура повторяется m раз.