Может ли кто-нибудь помочь с временной сложностью этого алгоритма и почему это O (n^2). Пошаговое объяснение было бы полезно, спасибо!Алгоритм разделения - сложность времени
function divide(x,y)
Input: Two n-bit integers x and y, where y >= 1
Output: The quotient and remainder of x divided by y
if x = 0:
return (q,r) = (0,0)
(q,r) = divide(x/2, y)
q = 2q
r = 2r
if x is odd:
r = r + 1
if r >= y:
r = r - y
q = q + 1
return (q,r)
Не могли бы вы добавить код в свой код? Сейчас читать довольно сложно. – Skurmedel
Необходимые разъяснения - это арифметические операции, работающие с базовым типом данных (например, int) или с массивами из них (например, массив BigInt ints)? – paxdiablo
нет его нет, его экзаменационный вопрос и я пересматриваю для предстоящего экзамена. У меня есть решения здесь, но я не понимаю: при каждом вызове алгоритма мы теряем один бит. Так будет n + 1 звонков. Каждый вызов включает не более 2 умножений на 2 (сдвиг влево), два дополнения на 1 и вычитание на y, которое является всем O (n). Следовательно, общая сложность равна O (n2) – KP65