Проблема в нахождении большинства элементов в массиве.Я понимаю, как работает этот алгоритм, но я не знаю, почему он имеет O (nlogn) как сложность времени .....
a.Оба возвращают \ нет большинства. "Тогда ни половина массива не имеет элемента большинства, а объединенный массив не может иметь элемента большинства. Поэтому вызов возвращает \ нет большинства."
b.Правая сторона - большинство, а левая - нет.Единственное возможное большинство для этого уровня - это значение, составляющее большинство в правой половине, поэтому просто сравните каждый элемент в объединенном массиве и посчитайте количество элементов, равное этому значению.Если это элемент большинства, тогда вернуть этот элемент, в противном случае вернуть \ no большинству. "
c. То же, что и выше, но с левым возвращением большинства, а правым с возвращением \ без большинства."
д.Оба подзвона возвращают мажоритарный элемент.Подсчитайте количество элементов, равное обоим кандидатам на мажоритарный элемент.Если любой из них является элементом большинства в объединенном массиве, верните его.В противном случае, верните \ no большинству. "Верхний уровень просто возвращает либо мажоритарный элемент, либо что мажоритарный элемент не существует таким же образом.
Следовательно, T (1) = 0 и T (n) = 2T (n / 2) + 2n = O (nlogn)
Я думаю,
Каждая рекурсия сравнивает мажоритарный элемент со всем массивом, который занимает 2n.
T(n) = 2T(n/2) + 2n = 2(2T(n/4) + 2n) +
2n = ..... = 2^kT(n/2^k) + 2n + 4n + 8n........ 2^kn = O(n^2)