2012-05-18 2 views
0

Я застрял в задаче, мне нужно решить проблему, здесь:Разработка и анализ алгоритма

Написать алгоритм, который находит индекс i в массиве таким образом, что A[i] = i когда 0<=i<=n-1, если нет такого индекс нашел возвращение -1

Я сделал этот вопрос в O(n) время, но мои ребята говорят, что это может быть сделано за меньшее время некоторые где около O(lg(n))

может кто-нибудь поможет мне найти лучшее решение ?? Если да, ответьте на этот пост. Просьба ответить на этот пост .. Thanks

+0

Рассчитайте рекурсию и O (log (n)). – duffymo

+6

Ваш массив отсортирован? –

+0

Почему бы вам просто не попросить своего коллегу, как это будет работать? – Ingo

ответ

2

Если массив отсортирован, вы можете найти его в O(lg(n)) с помощью binary search. В противном случае это потребует O(n).

0

Вы должны сделать binary search на массиве. Вы пропустили очень важную часть описания проблемы - массив должен быть отсортирован заранее.

+0

Array уже сортируется в порядке возрастания. –

+0

Вот что я сказал - просто указал, что вам не хватает важной части заявления. Если массив не отсортирован, вы не можете улучшить линейную сложность. –

1

Если массив не отсортирован, это невозможно. Я предполагаю, что вы ищете детерминированный, не вероятностный алгоритм. Предположим, что существует алгоритм «Alg», который решает проблему, посещая ячейки O (log (n)) массива. Пусть V (I) - множество ячеек, которые посещают Alg на заданном входе I. Также предположим, что ответ на вход I1 равен -1, а Alg возвращает -1 правильно. Теперь измените одну из ячеек I1, которая не находится в V (I1), и снова передайте ее Alg. Конечно, Alg возвращает -1 снова, что не является правильным ответом.

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