Jairman
@Jairman
Тот самый

Как применить алгоритм «Разделяй и Властвуй» к неотсортированному массиву?

Пока идея только отсортировать массив, но, думаю, это не эффективно

Сама задача, которую я решаю:
Напишите программу на основе разделяй и властвуй позволяющую эффективно проверять принадлежность пары значений массиву. Например, пара (2,3) принадлежит массиву [1,2,3,5,7,11,13,17], а пара (3,4) - нет. Можно считать, что количество запросов многократно превышает размер массива. В комментариях напишите, почему перебор - эффективное
  • Вопрос задан
  • 461 просмотр
Решения вопроса 2
tsarevfs
@tsarevfs Куратор тега C++
C++ developer
>количество запросов многократно превышает размер массива
Сортировка работает за O(n*log(n)), бинпоиск будет работать за O(log(n)). Суммарная сложность будет O(n*log(n)) при количестве запросов порядка n.

Поиск полным перебором будет работать за O(n) для каждого запроса. Суммарная сложность будет не лучше O(n ^ 2), что очевидно хуже.

Быстрее можно только с построением hash-таблицы. Но это дополнительная память и не «Разделяй и Властвуй».
Ответ написан
vaut
@vaut
Перебор O(n)
Двоичный поиск на отсортированном массиве или двоичном дереве O(log n)
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы