|
|
|
Структуры данных
|
|||
|---|---|---|---|
|
#18+
Вопрос больше из области теории. Необходимо хранить структуру данных в виде некого набора пар число-число причем число ключ должно быть уникальным и число значение тоже уникально. Т.е. 1=5 2=4 3=3 4=2 5=1 Всякие там Map и List не предлагать. Значений в массиве может быть достаточно много и необходимо минимизировать расход ресурсов на это дело. Есть здравые предложения? :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2012, 11:58:31 |
|
||
|
Структуры данных
|
|||
|---|---|---|---|
|
#18+
ШмякВопрос больше из области теории. Необходимо хранить структуру данных в виде некого набора пар число-число причем число ключ должно быть уникальным и число значение тоже уникально. Какой диапазон чисел? byte/int/long/BigDecimal? Какие основные операции? Какие наиболее частые? ШмякВсякие там Map и List не предлагать. Значений в массиве может быть достаточно много и необходимо минимизировать расход ресурсов на это дело. Ой, да ладно. Экономия на спичках? Сколько "достаточно много"? ШмякЕсть здравые предложения? :) Есть opensource реализации коллекций для примитивов. Сама структура особого смысла не имеет, если не знать какие операции нужны. Пока только поняли что нужна проверка или замещение при вставке. Так как кажое должно быть уникальным, то, наверное, проверка, а не замещение? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2012, 12:09:02 |
|
||
|
Структуры данных
|
|||
|---|---|---|---|
|
#18+
Операций никаких нет, последовательное чтение элементов. ключ должен быть всегда последовательный от 1 до Integer.MAX_VALUE, а значение должно быть в том же диапазоне, но перемешено случайным образом. Ну и специально для BlazkowiczОй, да ладно. Экономия на спичках? Сколько "достаточно много"? Запишите в Map подобную структуру хотя бы до Integer.MAX_VALUE/2 и посмотрите сколько оно отожрет? А теперь подобную операцию проделайте на Андроиде, где ресурсы счет любят. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2012, 12:17:28 |
|
||
|
Структуры данных
|
|||
|---|---|---|---|
|
#18+
Шмяк, простой массив? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2012, 12:24:28 |
|
||
|
Структуры данных
|
|||
|---|---|---|---|
|
#18+
Если ключ полседовательный от 1 до Integer.MAX_VALUE, то нужно что-то типа Set с возможностью получения индекса в качестве ключа. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2012, 12:25:10 |
|
||
|
Структуры данных
|
|||
|---|---|---|---|
|
#18+
:) ну, кнечно больше из области теории. Да, таки массив. Но хранить в массиве Integer.MAX_VALUE*32bit , кажется не совсем правильным. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2012, 12:27:49 |
|
||
|
Структуры данных
|
|||
|---|---|---|---|
|
#18+
ШмякЗапишите в Map подобную структуру хотя бы до Integer.MAX_VALUE/2 и посмотрите сколько оно отожрет? Ты прикалываешься? Integer.MAX_VALUE = 2,147,483,647 Integer.MAX_VALUE / 2 ~ 1G, 4 байта на int - 4Gb. Тут даже без HashMap обосрешься массив на андроиде создавать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2012, 12:28:56 |
|
||
|
Структуры данных
|
|||
|---|---|---|---|
|
#18+
ШмякА теперь подобную операцию проделайте на Андроиде, где ресурсы счет любят. С этого стоило бы начать вопрос. А то любят тут спрашивать-спрашивать, а в конце темы написать, мол J2ME. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2012, 12:30:19 |
|
||
|
Структуры данных
|
|||
|---|---|---|---|
|
#18+
Blazkowicz Вот если бы все было так просто, я бы и не спрашивала. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2012, 12:30:36 |
|
||
|
Структуры данных
|
|||
|---|---|---|---|
|
#18+
ШмякВот если бы все было так просто, я бы и не спрашивала. Я спросил сколько ожидается пар. Получил ответ померять Integer.MAX_VALUE/2. Это не похоже на реалистичное значение, потому что даже простой массив такого размера придется размещать на долговременном хранилище, а не памяти. Поэтому может обсудим реалистичную постановку задачи? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2012, 12:34:17 |
|
||
|
Структуры данных
|
|||
|---|---|---|---|
|
#18+
Так обязательно в памяти размещать? Или можно в файле? Тогда проще, так как ключи упорядочены, можно весь диапазон разбить по сегментам и быстро вычислять сегмент из значения, как в HashMap. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2012, 12:37:09 |
|
||
|
Структуры данных
|
|||
|---|---|---|---|
|
#18+
ШмякОпераций никаких нет, последовательное чтение элементов. Т.е. это постоянный массив, который в процессе не модифицируется? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2012, 12:45:54 |
|
||
|
Структуры данных
|
|||
|---|---|---|---|
|
#18+
Оки. Вы вот все хотите подогнать под существующие структуры, желание ясно. Тогда такая вам институтская задача. :) Допустим необходимо случайным образом выбирать числа от 1 до Integer.MAX_VALUE. При этом если генератор случайных чисел выдаст число(масло масляное), которое уже было необходимо остановить обработку. Как бы вы эту задачу реализовали? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2012, 12:45:59 |
|
||
|
Структуры данных
|
|||
|---|---|---|---|
|
#18+
Шмяк, Redis, etc ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2012, 12:46:25 |
|
||
|
Структуры данных
|
|||
|---|---|---|---|
|
#18+
Массив определяется в начале работы и в процессе уже не меняется. Т.е. определяется его размер и заполняется данными. И в процессе работы бегаем по нему вперед и назад. Размер может быть маленьким а может быть максимальным. Закладываемся на критическое значение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2012, 12:48:30 |
|
||
|
Структуры данных
|
|||
|---|---|---|---|
|
#18+
ШмякОки. Вы вот все хотите подогнать под существующие структуры, желание ясно. Тогда такая вам институтская задача. :) Допустим необходимо случайным образом выбирать числа от 1 до Integer.MAX_VALUE. При этом если генератор случайных чисел выдаст число(масло масляное), которое уже было необходимо остановить обработку. Как бы вы эту задачу реализовали? тебе ж говорят - если данные не убираются в память то надо использовать базу данных. Если убираются то большой разницы между массивом и мапом или листом нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2012, 12:48:44 |
|
||
|
Структуры данных
|
|||
|---|---|---|---|
|
#18+
1024 большой разницы между массивом и мапом или листом нет Учите мат часть, разница есть и большая. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2012, 12:52:29 |
|
||
|
Структуры данных
|
|||
|---|---|---|---|
|
#18+
ШмякВы вот все хотите подогнать под существующие структуры, желание ясно. А они достаточно оптимизированы. И все мои вопросы снова игнорируются. :( ШмякДопустим необходимо случайным образом выбирать числа от 1 до Integer.MAX_VALUE. При этом если генератор случайных чисел выдаст число(масло масляное), которое уже было необходимо остановить обработку. Как бы вы эту задачу реализовали? Шафл бы сделал вместо генератора. Опять задача выдрана из конктекста. Я могу кучу вариантов привести, но вы их отметёте, потому что у вас свой контекст и вы его знаете. На сколько генератор нормально распределен? Можно пробовать выделять диапазоны и вводить для них уровень использованности. Как долго длиться обработка? Если долго, то массив можно и в файловой системе разместить. У меня тут куча вопросов, которые влияют на оптимальность решения. А на них нет ни одного ответа. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2012, 12:53:40 |
|
||
|
Структуры данных
|
|||
|---|---|---|---|
|
#18+
1024, студенческая задачка про случайные числа решается без использования файлов и баз данных. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2012, 12:54:30 |
|
||
|
Структуры данных
|
|||
|---|---|---|---|
|
#18+
ШмякУчите мат часть, разница есть и большая. Нет особой разницы http://habrahabr.ru/post/159557/ Либо данные можно в памяти разместить, тогда 4-10-20 байт на элемент роли не сыграют. Либо нельзя тогда размещаем в файловой системе или базе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2012, 12:57:20 |
|
||
|
Структуры данных
|
|||
|---|---|---|---|
|
#18+
Обработка длится долго. И если уж конкретней, то в массиве хранятся не сами данные а индексы элементов другого массива, в котором эти данные и есть, он вот и хранится в файле. Типа, индекс :) Грубо говоря, в файле хранится много-много строк и необходимо эти строки случайным образом перемешать и последовательно обрабатывать вперед, назад... по желанию пользователя. Но в исходном файле данные перемешивать нельзя. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2012, 12:59:32 |
|
||
|
Структуры данных
|
|||
|---|---|---|---|
|
#18+
ШмякМассив определяется в начале работы и в процессе уже не меняется. Наконце-то детали начали поступать. ШмякТ.е. определяется его размер и заполняется данными. И в процессе работы бегаем по нему вперед и назад. Размер может быть маленьким а может быть максимальным. Закладываемся на критическое значение. Т.е. задача вообще не в том чтобы провалидировать, или наполнить. А исключительно оптимизировать хранение и перебор? Можно же было сразу объяснить? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2012, 12:59:48 |
|
||
|
Структуры данных
|
|||
|---|---|---|---|
|
#18+
ШмякДопустим необходимо случайным образом выбирать числа от 1 до Integer.MAX_VALUE. При этом если генератор случайных чисел выдаст число(масло масляное), которое уже было необходимо остановить обработку. Как бы вы эту задачу реализовали? Как обычно никто не может нормально объяснить что нужно. Вот ещё раз перечитал. "необходимо остановить обработку" - обработку чего? Где мы её в задаче начали? Вообще весь процесс остановить? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2012, 13:01:32 |
|
||
|
Структуры данных
|
|||
|---|---|---|---|
|
#18+
При этом если генератор случайных чисел выдаст число(масло масляное), которое уже было необходимо остановить обработку. Как бы вы эту задачу реализовали? Используйте фильтр блума. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2012, 13:04:57 |
|
||
|
|

start [/forum/topic.php?desktop=1&fid=59&tid=2130409]: |
0ms |
get settings: |
15ms |
get forum list: |
24ms |
check forum access: |
5ms |
check topic access: |
5ms |
track hit: |
72ms |
get topic data: |
19ms |
get forum data: |
5ms |
get page messages: |
71ms |
get tp. blocked users: |
3ms |
| others: | 304ms |
| total: | 523ms |

| 0 / 0 |
