|
|
|
Структуры данных
|
|||
|---|---|---|---|
|
#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 |
|
||
|
Структуры данных
|
|||
|---|---|---|---|
|
#18+
Ребята, вы откуда взялись? Вы решаете задачу тупо в лоб! Т.е. не решаете а просто подгоняете. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2012, 13:06:17 |
|
||
|
Структуры данных
|
|||
|---|---|---|---|
|
#18+
Йуный джавистЪИспользуйте фильтр блума. О! Примерно то что я думал. Можно закрывать целые регионы и с высокой долей вероятности говорить что там нет свободных чистел. Но вот и формализированое представление. Спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2012, 13:08:15 |
|
||
|
Структуры данных
|
|||
|---|---|---|---|
|
#18+
Во-первых, ты задачу не сформулировал. Во-вторых, никаких волщебных структур данных нет, их всего штук 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2012, 13:08:27 |
|
||
|
Структуры данных
|
|||
|---|---|---|---|
|
#18+
ШмякОбработка длится долго. И если уж конкретней, то в массиве хранятся не сами данные а индексы элементов другого массива, в котором эти данные и есть, он вот и хранится в файле. Типа, индекс :) Грубо говоря, в файле хранится много-много строк и необходимо эти строки случайным образом перемешать и последовательно обрабатывать вперед, назад... по желанию пользователя. Но в исходном файле данные перемешивать нельзя. Вот так задача "сделать коллекцию" превратилась в задачу "реализовать шафл". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2012, 13:09:09 |
|
||
|
Структуры данных
|
|||
|---|---|---|---|
|
#18+
ШмякРебята, вы откуда взялись? Вы решаете задачу тупо в лоб! Т.е. не решаете а просто подгоняете. Как объяснил, так и решаем. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2012, 13:10:18 |
|
||
|
Структуры данных
|
|||
|---|---|---|---|
|
#18+
По поводу студенческой задачи расскажу ответ. Необходимо хранить не само число а признак того, что число уже встречалось. Т.е. надо не массив int хранить размера Integer.MAX_VALUE, а массив bit размера Integer.MAX_VALUE. и тогда вы израсходуете не 8.5 гигов, если решать задачу тупо в лоб, а примерно 8 мегов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2012, 13:11:27 |
|
||
|
Структуры данных
|
|||
|---|---|---|---|
|
#18+
Ладнушки, тему закрыла. Не хватает у меня араторских способностей объяснить вам задачу. Или вы ее понимать не хотите. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2012, 13:13:26 |
|
||
|
Структуры данных
|
|||
|---|---|---|---|
|
#18+
ШмякПо поводу студенческой задачи расскажу ответ. Необходимо хранить не само число а признак того, что число уже встречалось. ОК. Как это свяазано с задачами шафла и создания коллекции? ШмякТ.е. надо не массив int хранить размера Integer.MAX_VALUE, а массив bit размера Integer.MAX_VALUE. Логично. У нас уже есть 3 задачи. Одну решили. Осталось две. Шмяки тогда вы израсходуете не 8.5 гигов, если решать задачу тупо в лоб, а примерно 8 мегов. MAX_VALUE это 2G по одном биту на число это 2G/8~270Mb, а не 8. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2012, 13:23:50 |
|
||
|
Структуры данных
|
|||
|---|---|---|---|
|
#18+
ШмякЛаднушки, тему закрыла. ОК. ШмякНе хватает у меня араторских способностей объяснить вам задачу. "арать" :) Вы из более чем десяти моих вопросов ответили на два. Т.е. вам ваш же собственный вопрос не интересеню ШмякИли вы ее понимать не хотите. :) ЧСВ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2012, 13:25:18 |
|
||
|
Структуры данных
|
|||
|---|---|---|---|
|
#18+
BlazkowiczMAX_VALUE это 2G по одном биту на число это 2G/8~270Mb, а не 8. Стоит так же отметить что до примерно 1млн итерций, битовый массив, возможно, будет не самой оптимальной структурой по потреблению памяти. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2012, 13:40:22 |
|
||
|
Структуры данных
|
|||
|---|---|---|---|
|
#18+
Шмяк1024 большой разницы между массивом и мапом или листом нет Учите мат часть, разница есть и большая. по сравнению с тем убираются данные в память или нет разница между мапом и массивом ничтожна. В первом случае разница качественная а во втором только количественная. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2012, 16:33:19 |
|
||
|
|

start [/forum/topic.php?all=1&fid=59&tid=2130409]: |
0ms |
get settings: |
19ms |
get forum list: |
26ms |
check forum access: |
6ms |
check topic access: |
6ms |
track hit: |
47ms |
get topic data: |
16ms |
get forum data: |
5ms |
get page messages: |
88ms |
get tp. blocked users: |
3ms |
| others: | 370ms |
| total: | 586ms |

| 0 / 0 |
