2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




Начать новую тему Ответить на тему На страницу 1, 2, 3  След.
 
 Частое обновление массива.
Сообщение18.03.2013, 12:29 
Заслуженный участник
Аватара пользователя


06/04/10
3152
Иногда возникает потребность частого обновления (инициализации) большого массива. Делать это в цикле - затратно по времени.

Придумать структуру, где обновление производится столь же быстро, как чтение/запись элемента массива.

 Профиль  
                  
 
 Re: Частое обновление массива.
Сообщение18.03.2013, 12:32 
Заслуженный участник
Аватара пользователя


23/08/07
5500
Нов-ск
nikvic в сообщении #697530 писал(а):
Иногда возникает потребность частого обновления (инициализации) большого массива. Делать это в цикле - затратно по времени.
Что именно делать в цикле затратно?

 Профиль  
                  
 
 Re: Частое обновление массива.
Сообщение18.03.2013, 12:42 
Заслуженный участник
Аватара пользователя


06/04/10
3152
Записать во все элементы одно и то же значение. Линейное время по длине цикла...

 Профиль  
                  
 
 Re: Частое обновление массива.
Сообщение18.03.2013, 12:47 
Заслуженный участник
Аватара пользователя


23/08/07
5500
Нов-ск
nikvic в сообщении #697537 писал(а):
Записать во все элементы одно и то же значение. Линейное время по длине цикла...

При чем здесь цикл?
Вот беру и присваиваю безо всякого цикла: A=1.0

 Профиль  
                  
 
 Re: Частое обновление массива.
Сообщение18.03.2013, 13:19 
Заслуженный участник
Аватара пользователя


06/04/10
3152
TOTAL в сообщении #697539 писал(а):
Вот беру и присваиваю безо всякого цикла: A=1.0

У Вас А - это массив? В некоторых языках так записать, видимо, можно, однако что с этим делает транслятор?

 Профиль  
                  
 
 Re: Частое обновление массива.
Сообщение18.03.2013, 13:24 
Заслуженный участник
Аватара пользователя


23/08/07
5500
Нов-ск
nikvic в сообщении #697548 писал(а):
У Вас А - это массив? В некоторых языках так записать, видимо, можно, однако что с этим делает транслятор?

Код:
      real*4, dimension (0:1,-1:0):: A,B,C
              A=1.0; B=2.0; C=A+B
           write(*,*) C
      end

Все четыре элемента массива $C$ благополучно становятся равными $3.0$

 Профиль  
                  
 
 Re: Частое обновление массива.
Сообщение18.03.2013, 13:34 
Заслуженный участник
Аватара пользователя


06/04/10
3152
Что будете делать, если в массиве 5 ярдов длинных записей?

 Профиль  
                  
 
 Re: Частое обновление массива.
Сообщение18.03.2013, 13:42 
Заслуженный участник
Аватара пользователя


23/08/07
5500
Нов-ск
nikvic в сообщении #697553 писал(а):
Что будете делать, если в массиве 5 ярдов длинных записей?
$A=3.15$ - это для любых ярдов работает

 Профиль  
                  
 
 Re: Частое обновление массива.
Сообщение18.03.2013, 13:52 
Заслуженный участник
Аватара пользователя


06/04/10
3152
TOTAL в сообщении #697557 писал(а):
nikvic в сообщении #697553 писал(а):
Что будете делать, если в массиве 5 ярдов длинных записей?
$A=3.15$ - это для любых ярдов работает

Не понял. Да и цены такой после 3.12 не помню :D

Давайте ограничимся примитивным языком, в котором отсутствует команда присвоения всем элементам массива одинакового заданного значения.

 Профиль  
                  
 
 Re: Частое обновление массива.
Сообщение18.03.2013, 13:55 
Заслуженный участник


04/05/09
4589
Добавить ко всему массиву и каждому элементу версию значения.

 Профиль  
                  
 
 Re: Частое обновление массива.
Сообщение18.03.2013, 13:57 
Заслуженный участник
Аватара пользователя


06/04/10
3152
venco в сообщении #697562 писал(а):
Добавить ко всему массиву и каждому элементу версию значения.


Как это поможет не "пробегАть" по всем элементам при инициализации?

 Профиль  
                  
 
 Re: Частое обновление массива.
Сообщение18.03.2013, 14:03 
Заслуженный участник
Аватара пользователя


23/08/07
5500
Нов-ск
nikvic в сообщении #697560 писал(а):
Давайте ограничимся примитивным языком, в котором отсутствует команда присвоения всем элементам массива одинакового заданного значения.
Тогда условие непонятно. Каждый элемент имеет определенный адрес. Все равно по каждому адресу надо записать новое число.

 Профиль  
                  
 
 Re: Частое обновление массива.
Сообщение18.03.2013, 14:07 
Аватара пользователя


07/01/13
261
NJ
Хранить в массиве ссылки на объекты? Изменение объекта немедленно отражается в массиве, особенно если все элементы массива ссылаются на один и тот же объект.

 Профиль  
                  
 
 Re: Частое обновление массива.
Сообщение18.03.2013, 14:12 
Заслуженный участник


04/05/09
4589
nikvic в сообщении #697563 писал(а):
venco в сообщении #697562 писал(а):
Добавить ко всему массиву и каждому элементу версию значения.


Как это поможет не "пробегАть" по всем элементам при инициализации?
Всё вам разжевать надо. ;-)
Пробегать не надо. Надо увеличить версию массива на 1 и сохранить новое значение по умолчанию. При записи элемента ему присваивается версия массива и новое значение. При чтении если версия элемента меньше версии массива, значит берём дефолтное значение массива, иначе значение из самого элемента.

 Профиль  
                  
 
 Re: Частое обновление массива.
Сообщение18.03.2013, 14:13 
Заслуженный участник
Аватара пользователя


06/04/10
3152
TOTAL в сообщении #697565 писал(а):
Все равно по каждому адресу надо записать новое число.

"Работа с массивом" - три операции: читать элемент, записать значение в элемент, инициализировать всё значением.

Задача состоит в описании структуры, для которой все три укладываются в константу "времени", не зависящую от длины массива.

-- Пн мар 18, 2013 15:14:54 --

venco в сообщении #697568 писал(а):
Надо увеличить версию массива на 1

У Вас неограниченная память? Или поясните, что значит "версия".

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 37 ]  На страницу 1, 2, 3  След.

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group