Вставьте и ищите быстро - PullRequest
       1

Вставьте и ищите быстро

1 голос
/ 21 сентября 2010

Какова лучшая структура данных для быстрого выполнения следующей операции

  • Вставить
  • Найти.

Спасибо Авинаш

Ответы [ 3 ]

3 голосов
/ 21 сентября 2010

Если одна и та же структура данных должна выполнять обе операции, то это должна быть карта хеша .

1 голос
/ 21 сентября 2010

по моему мнению hash_map

0 голосов
/ 21 сентября 2010

Хорошая реализация для списков смежности графов - использование динамически распределенных векторов целых чисел.

Предположим, у вас есть не более N узлов в вашем графике. Вы можете хранить график в массиве из N динамически распределенных векторов целых чисел. Это будет выглядеть так:

вектор [N]

Чтобы вставить ребро из узла x в узел y, вы используете:

вектор [х] .С (у)

Таким образом, если граф разреженный (не имеет много ребер), вы можете быстро найти все исходящие ребра узла.

Если вы хотите узнать, есть ли грань между x и y, вам нужно пройти через вектор [x] и найти его. Если вы хотите ускорить это, вы можете дополнительно использовать двумерный логический массив, если число узлов мало (разумно меньше 1000).

Если у вас много узлов и вы хотите ускорить эту операцию, вы можете использовать хэш-карту.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...