я решил следующую задачу себе:Разделяй и властвуй: IndexSearch
Дайте алгоритм, чтобы найти индекс я, что 1 < = я < = п и А [I] = я обеспечить такой индекс существует. Если есть такие индексы, алгоритм может вернуть любой из них.
Я использовал разделяй и властвуй подход и как результат я получаю:
public static int IndexSearch(int []A, int l, int r) {
if (l>r)
return -1;
int m = (l+r)/2;
IndexSearch(A, l, m-1);
IndexSearch(A, m+1, r);
if (A[m]==m)
return m;
else
return -1;
}
Сначала хотел спросить, если это правильно? Я думаю, да ....
Что такое рекурсия T (n) в этом случае?
Я полагаю:
2Т (п/2) + O (1) ----> правильно ли это? можете ли я подробно объяснить мне, как решить повторение, применяя магистерскую теорему?
a = 2 b = 2 f (n) = 1 n^logba = n ---> n vs 1, поэтому мы имеем CASE 1, что приводит к O (n) -> ???? правильно?
Моя цель состоит в том, чтобы попытаться использовать разделяй и властвуй подход к решению этой проблемы .... – Patric
Спасибо и за ур усилий! он работает, если у вас есть случай, когда u имеет 1 элемент, равный индексу, но что, если я хочу напечатать все элементы с равным индексом массива? Попробуйте l = [1,2,3,3,4,6,7,8,9] ... он напечатает только один элемент. – Patric
Посмотрите мое возможное решение выше ... – Patric