IPB
ЛогинПароль:

> Закономерность в массиве
sheka
сообщение 29.10.2010 20:59
Сообщение #1


Я.
****

Группа: Пользователи
Сообщений: 809
Пол: Мужской
Реальное имя: Саша

Репутация: -  11  +


Нужно в массиве 2n элементов поменять последовательность элементов на
а1аn+1a2an+2...ana2n
Препод говорил, что с помощью одной переменной этого сделать нельзя. (доп массив из n элементов - не интересно).
Вот что получилось (один запоминается, а на его место ставится, но уже на свое место другой):
Curr := 2;
buf := a[Curr];
for i := 1 to 2*n-3 do
begin
if Curr mod 2 = 0 then
Next := n+Curr div 2
else
Next := (Curr+1) div 2;
a[Curr] := a[Next];
Curr := Next;
end;
a[Curr] := buf;

но работает только для некоторых, и процент работающих с ростом n уменьшается.
Для неработающих: должен где-то быть вызов буфера, но этого я не делал, т.к. для этого, по моей фантазии надо как минимум еще один булевый 2n-2 массив, что еще хуже дополнительного массива.
Неужели он был прав?

Сообщение отредактировано: sheka - 1.11.2010 20:04
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
Гость
сообщение 30.10.2010 14:57
Сообщение #2


Гость






Лень перелогиниваться. До картинок дело не дошло пока.

> ты хочешь сказать, что для всех натуральных n нужно писать свой специальный алгоритм?..

Можно, но не нужно. Надо найти закономерность, чтобы общий алгоритм выделить.

> то ему, TarasBer'у, будет непросто - ой непросто, TarasBer! - доказать, что соблюдена асимптотика O(n)..

Суммарная длина циклов равна n.
 К началу страницы 
+ Ответить 

Сообщений в этой теме
sheka   Закономерность в массиве   29.10.2010 20:59
Гость   Парными перестановками можно переставить массив не...   29.10.2010 21:57
Гость   Или требуется именно за O(n) сделать? Хм, интересн...   29.10.2010 21:58
Lapp   Неужели он был прав?Грубо говоря, правило такое: л...   30.10.2010 5:58
Гость   TarasBer прикинул на бумаге, и TarasBer решил, что...   30.10.2010 12:43
Lapp   если задать n наперёд, то написать алгоритм, дающи...   30.10.2010 13:58
Гость   Лень перелогиниваться. До картинок дело не дошло п...   30.10.2010 14:57
Lapp   Можно, но не нужно. Надо найти закономерность, что...   30.10.2010 15:17
TarasBer   1. Берём x 2. Берём y = 2x mod (2n-1) 3. Меняем ме...   30.10.2010 15:30
Lapp   Главное в общем виде понять, как выглядит каждая т...   31.10.2010 4:54
TarasBer   Короче, алгебраисты нужны При каких эн верно min{k...   31.10.2010 10:58
sheka   Я это подразумевал :) Товарищ преподаватель чуть-ч...   31.10.2010 18:55
TarasBer   Ща попытаюсь разобраться, что тут написано. У тебя...   31.10.2010 19:53
Unconnected   Поясните плз, смысл в том, чтобы an элементы менят...   31.10.2010 21:39
Lapp   Шек, я совершенно согласен с ТарасБером: желание в...   1.11.2010 6:44
sheka   Пожалуй, прокомментирую код - думаю, отвечу на все...   1.11.2010 19:56


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 19.07.2025 15:01
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"