2015-11-29 2 views
0

Каков абсолютный самый быстрый способ найти совпадающие значения в массиве 2d?Самый быстрый способ найти совпадающее значение в массивах 2d

позволяет сказать, что у меня есть массив int arr[2][2]={{1,5},{2,2},{1,5}} , и я хочу найти все значения, соответствующие {1,5}, из массива будет намного больше. Каков самый быстрый способ сделать это?

+0

Какова природа чисел (1, 5 и т. Д.). все ли они единичные цифры. У них есть предел? – Fattie

+0

Вы можете ввести какой-то скаляр, чтобы проверить, совпадают ли две пары чисел или нет. Скаляр также позволяет вам knwo, если одна пара меньше, чем другая. Таким образом, вы можете использовать любое сбалансированное двоичное дерево для получения той же пары, что и в логарифмическом времени. –

+0

нет, они не одиночные, эти числа будут случайными от 1 до 10000000000 – Abdir

ответ

0

Если нет другой информации, самый быстрый способ - это просто проверить каждый элемент до тех пор, пока вы его не найдете или не проверили все.

Извлечение элементов становится намного быстрее, если у вас есть некоторый контроль над тем, как создается массив. Например, сохранение элементов, отсортированных по некоторым критериям, позволило бы бинарный поиск (например, с использованием ISO C bsearch()).

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

В конце концов, «Все оптимизация - это упражнение в кешировании».

Смежные вопросы