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

> Закономерность в массиве
сообщение
Сообщение #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 -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
сообщение
Сообщение #2


Я.
****

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

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


Цитата
сделать за один проход
Я это подразумевал smile.gif
Цитата
можно было бы обойтись и без буфера
Товарищ преподаватель чуть-чуть бушует, если пользоваться такой арифметикой для массивов.
Цитата
Именно. Подобный "пустяк"
Именно. smile.gif
И насчет "пустяк": вот
код (Показать/Скрыть)
, на основе которого я сделал свое заключение о "пустяк" в 1м посте.

Цитата
Для 12 элементов картинка такая, видно, что надо провести один циклический обмен по специальной траектории.
Удачный пример good.gif я тоже такие картинки рисовал и думал даже их в графике для наглядности сделать, но как-то и с помощью статистики все понял(а руки так и чесались нарисоватьsmile.gif).

ЗЫ: Предмет называется "Структуры Данных и Алгоритмы", и на нем нас учат делать все как можно быстрее, почему-то не сильно обращая внимание на память(но только в аспекте сравнения со скоростью).

Сообщение отредактировано: sheka -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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


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

 





- Текстовая версия 31.05.2024 15:02
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name