Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Циклический сдвиг




Инвертирование массива

Объединение двух массивов с чередованием элементов

Требуется объединить два массива одинакового размера

A = (a0, a1,, an-1) и B = (b0, b1,, bn-1) в один массив C = (a0, b0, a1, b1,…,an-1, bn-1).

Элементами массива С с четными индексами являются элементы массива A:

c0 = a0, с2 = a1,…, с2i = a i,…,

элементами с нечетными индексами – элементы массива B:

c1 = b0, c3 = b1…, …, с2i-1 = bi,…

Таким образом, требуется организовать цикл и выполнить операции:

с2i= ai, с2i-1 = bi - 1, для i = 0, 1, 2,, n – 1.

Если массивы имеют разные размеры, то больший массив обрезается по размеру меньшего и меньший массив и урезанный большой объединяются в соответствии с предложенным алгоритмом. Далее оставшиеся элементы большего массива пересылаются подряд.

  1. Объединение двух упорядоченных массивов в один с сохранением упорядоченности.

Требуется объединить два упорядоченных по убыванию массива A размером n и B размером m в один массив C размером n+m, также упорядоченный.

Схема алгоритма

• Начиная с первых элементов массивов 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), то оставшиеся элементы другого массива пересылаются друг за другом без всяких проверок.

Реализовать алгоритм самостоятельно.

• Требуется изменить порядок следования элементов массива размером n на обратный, т.е. поменять местами

0-й элемент массива с (n – 1)-м, 1-й с (n – 2)-м, i-й с (n – i+1)-м. Последними нужно поменять местами средние элементы, т.е. (n/2)-й и (n/2+1)-й.

• Требуется переместить элементы массива А размером n на m позиций вправо. При этом m элементов из конца массива перемещаются в начало.

А = (a1, a2, a3, a4,a5) – исходный массив

A = (a4, a5, a1, a2,a3) – после циклической перестановки на 2 позиции вправо.

• Вариант 1. Используется вспомогательный массив для временного хранения m последних элементов массива А. Далее оставшиеся элементы с 0-го по (n–m–1)-й смещаются вправо на m позиций. (Заметим, что перемещение нужно начинать с последнего из перемещаемых элементов, чтобы не испортить элементы массива А.) После этого в первые m элементов пересылаются элементы вспомогательного массива.

• Вариант 2. Циклический сдвиг осуществляется с использованием одной вспомогательной переменной, в которую каждый раз пересылается последний элемент массива А, после чего все элементы сдвигаются вправо на 1 позицию (начиная с конца), и на место первого элемента помещается значение вспомогательной переменной. Эта процедура повторяется m раз.




Поделиться с друзьями:


Дата добавления: 2014-12-07; Просмотров: 466; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.01 сек.