2014 dxdy logo

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

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




Начать новую тему Ответить на тему
 
 Динамический массив
Сообщение14.03.2009, 21:17 
Аватара пользователя


27/10/08
222
Пусть $m$ --- длина массива, $n$ --- число элементов в массиве ($(m-n)$ элементов содержат мусор). Периодически происходит добавление в массив элементов по одному, причем максимально возможное число элементов неизвестно. Когда в массиве не остаётся свободных мест, приходится в новом месте выделять область памяти большего размера и переносить в неё старую информацию.
Предлагается каждый раз при создании нового массива выделять в $2$ раза больше памяти, чем занимал предыдущий. Вопрос: является ли это оптимальным подходом?

 Профиль  
                  
 
 
Сообщение14.03.2009, 21:41 
Заслуженный участник
Аватара пользователя


01/08/06
3131
Уфа
Вполне разумный подход.
Если хочется увеличить скорость работы, можно выделять больше, чем в 2 раза (в 4, в 8...), но при этом увеличивается вероятность нерационального использования памяти.

Если же хочется бережнее использовать память, можно выделять меньше, чем в 2 раза (в 1.5, 1.2, 1.1...). Но тогда увеличивается время копирования.

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

Добавлено спустя 2 минуты 7 секунд:

Оптимальность каждого метода зависит от того, как будет использоваться массив: преимущественно для добавления, или преимущественно для работы.

 Профиль  
                  
 
 
Сообщение15.03.2009, 11:28 
Аватара пользователя


27/10/08
222
Понятно.

 Профиль  
                  
 
 
Сообщение16.03.2009, 10:39 


21/03/06
1545
Москва
Задача, в общем случае, нетривиальная. По сути, указанную проблему решают т.н. менеджеры памяти в ОС. Поищите описание работы подобных программ, или по словосочетанию "управление памятью" чтоли.

Добавлено спустя 55 секунд:

Оптимальностью подхода зависит от целей - получить наиболее быстрый код/занять меньшее кол-во памяти/меньше фрагментировать память и т.п. И в общем-то, подход системно-зависимый.

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 4 ] 

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



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

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


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

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