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.
 К началу страницы 
+ Ответить 
Lapp
сообщение 30.10.2010 15:17
Сообщение #3


Уникум
*******

Группа: Модераторы
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

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


Цитата(Гость @ 30.10.2010 15:57) *
Можно, но не нужно. Надо найти закономерность, чтобы общий алгоритм выделить.
А зачем тогда писать слова про "заданное наперед n"? Чем оно тогда отличается от вульгарного "просто" n? smile.gif

Цитата
Суммарная длина циклов равна n.
Эти слова будут иметь вес только после либо: а) определения общего алгоритма, либо б) рассуждений, позволяющих это утверждать без общего алгоритма.. блин, писал эту фразу минуты полторы! и все равно какую-то чушь написал.. Короче - давай уже, показывай свой гениальный алгоритм, Ферма ты наш дорогой и любимый.. ))

Если не хочешь "перелогиниваться" - хоть напиши ник.. В форме есть специальное место для этого, ревизор ты наш инкогнито )).


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме
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

 



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