2014 dxdy logo

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

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




На страницу 1, 2, 3  След.
 
 Частое обновление массива.
Сообщение18.03.2013, 12:29 
Аватара пользователя
Иногда возникает потребность частого обновления (инициализации) большого массива. Делать это в цикле - затратно по времени.

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

 
 
 
 Re: Частое обновление массива.
Сообщение18.03.2013, 12:32 
Аватара пользователя
nikvic в сообщении #697530 писал(а):
Иногда возникает потребность частого обновления (инициализации) большого массива. Делать это в цикле - затратно по времени.
Что именно делать в цикле затратно?

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

 
 
 
 Re: Частое обновление массива.
Сообщение18.03.2013, 12:47 
Аватара пользователя
nikvic в сообщении #697537 писал(а):
Записать во все элементы одно и то же значение. Линейное время по длине цикла...

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

 
 
 
 Re: Частое обновление массива.
Сообщение18.03.2013, 13:19 
Аватара пользователя
TOTAL в сообщении #697539 писал(а):
Вот беру и присваиваю безо всякого цикла: A=1.0

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

 
 
 
 Re: Частое обновление массива.
Сообщение18.03.2013, 13:24 
Аватара пользователя
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 
Аватара пользователя
Что будете делать, если в массиве 5 ярдов длинных записей?

 
 
 
 Re: Частое обновление массива.
Сообщение18.03.2013, 13:42 
Аватара пользователя
nikvic в сообщении #697553 писал(а):
Что будете делать, если в массиве 5 ярдов длинных записей?
$A=3.15$ - это для любых ярдов работает

 
 
 
 Re: Частое обновление массива.
Сообщение18.03.2013, 13:52 
Аватара пользователя
TOTAL в сообщении #697557 писал(а):
nikvic в сообщении #697553 писал(а):
Что будете делать, если в массиве 5 ярдов длинных записей?
$A=3.15$ - это для любых ярдов работает

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

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

 
 
 
 Re: Частое обновление массива.
Сообщение18.03.2013, 13:55 
Добавить ко всему массиву и каждому элементу версию значения.

 
 
 
 Re: Частое обновление массива.
Сообщение18.03.2013, 13:57 
Аватара пользователя
venco в сообщении #697562 писал(а):
Добавить ко всему массиву и каждому элементу версию значения.


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

 
 
 
 Re: Частое обновление массива.
Сообщение18.03.2013, 14:03 
Аватара пользователя
nikvic в сообщении #697560 писал(а):
Давайте ограничимся примитивным языком, в котором отсутствует команда присвоения всем элементам массива одинакового заданного значения.
Тогда условие непонятно. Каждый элемент имеет определенный адрес. Все равно по каждому адресу надо записать новое число.

 
 
 
 Re: Частое обновление массива.
Сообщение18.03.2013, 14:07 
Аватара пользователя
Хранить в массиве ссылки на объекты? Изменение объекта немедленно отражается в массиве, особенно если все элементы массива ссылаются на один и тот же объект.

 
 
 
 Re: Частое обновление массива.
Сообщение18.03.2013, 14:12 
nikvic в сообщении #697563 писал(а):
venco в сообщении #697562 писал(а):
Добавить ко всему массиву и каждому элементу версию значения.


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

 
 
 
 Re: Частое обновление массива.
Сообщение18.03.2013, 14:13 
Аватара пользователя
TOTAL в сообщении #697565 писал(а):
Все равно по каждому адресу надо записать новое число.

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

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

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

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

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

 
 
 [ Сообщений: 37 ]  На страницу 1, 2, 3  След.


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group