Jairman
@Jairman
Тот самый

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

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

Сама задача, которую я решаю:
Напишите программу на основе разделяй и властвуй позволяющую эффективно проверять принадлежность пары значений массиву. Например, пара (2,3) принадлежит массиву [1,2,3,5,7,11,13,17], а пара (3,4) - нет. Можно считать, что количество запросов многократно превышает размер массива. В комментариях напишите, почему перебор - эффективное
  • Вопрос задан
  • 455 просмотров
Решения вопроса 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)
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы