Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Поиск в многомерном массиве (http://www.flasher.ru/forum/showthread.php?t=211036)

udaaff 14.06.2015 22:55

Не, данные продолжают добавляться как и прежде, но при этом в отдельном двумерном массиве ты фиксируешь уже то, что было добавлено, отмечая ячейку (true записываешь, например), данные убрал - true удалил. Т.е. если в массиве/карте по адресу (2;3) уже true, то данные в очередь не вносятся.

wvxvw 14.06.2015 23:24

А почему был выбран именно массив? В упорядоченой, или частично упорядоченой коллекции поиск занимал бы заметно меньше времени.

Если именно массив, то можно написать функцию хеширования для элементов массива и создать обратный индекс, где мы будем хранить хеши. Если проблема позволяет небольшую статистическую погрешность, то можно воспользоваться Блум фильтрами (при достаточно большом фильтре вероятность того, что если фильтр содержит хеш объекта будет очень близкой к тому, что такого объекта не было еще.)

Nooob 15.06.2015 01:40

у тебя же уже есть один числовой парметр - это индекс в массиве первого уровня, зачем в массиве второго уровня хранить его? в твоём случае это вполне себе одномерный массив [1, 2, 3]

Psycho Tiger 15.06.2015 16:31

[offtop] Мне очень нравится, как wxvxw отвечает на простые вопросы. Over-qualification в действии :)[/offtop]

GBee 15.06.2015 20:32

Цитата:

[offtop] Мне очень нравится, как wxvxw отвечает на простые вопросы. Over-qualification в действии [/offtop]
:о)) Ага, проблема? Попробуйте построить ракету и взглянуть на проблему с орбиты.

wvxvw 16.06.2015 00:08

Да почему ракету? Упорядоченые или частично упорядоченые коллекции были известны человечеству задолго до моего рождения. Во многих популярных языках они входят в стандартную библиотеку. В ЭкшнСркипте их нет в стандартной библиотеке, но есть на просторах интернета: я встречал как минимум две реализации кучи.

Хеш функции, опять же, есть в очень многих популярных языках в стандартной библиотеке, известно много простых алгоритмов для их создания, но в нашем случае можно было вообще очень просто все сделать: записывать содержание полей с использователем разделителей, которые не могут быть значением в поле. Например, если это точки, то сначала записываем координату по Х, потом, например, запятую, потом У.

Блум фильтры - это общий случай хеш таблицы, который просто самому написать, но это уже по желанию.

ZackMercury 16.06.2015 01:17

Цитата:

В ЭкшнСркипте их нет в стандартной библиотеке, но есть на просторах интернета: я встречал как минимум две реализации кучи.
Класса-посредника, который содержит в себе массив и манипулирует его свойствами и методами? Это может быть быстрее, чем общение с массивом напрямую? Не верю. Докажите.

wvxvw 16.06.2015 03:00

Я не совсем понимаю, что нужно доказывать? Что поиск в куче будет быстрее поиска в массиве? Ну так это в любом пособии для начинающих по структурам данных говорится... Поиск по неупорядоченому массиву: O(n), поикс в куче: O(log n). Тут как бы к гадалке не ходи... Куча примечательна еще и тем, что константа рядом с log n очень маленькая, т.как обычно сохраняется в массив, а рассчет индекса в массиве делается с помощью побитовых сдвигов.


Часовой пояс GMT +4, время: 02:46.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.