- (10 баллов) Напишите алгоритм O (nlogn), чтобы найти элемент большинства из списка элементов. (Предположим, что число элементов является степенью 2). Опять же, единственной операцией, которую вы можете использовать в элементах списка, является сравнение равенства. Подсказка: решить проблему размера п путем решения двух подзадач размера п/2
Это был тест на вопрос разделяй и властвуй, для моего класса алгоритмов. Вот код, который я написал в python 3.5.Напишите алгоритм, который возвращает элемент мажориты в списке
def majElement(L):
tally = 0
if len(L) == 1:
return 1
for i in range(len(L)):
tally = majElement(L[i:len(L)]) + majElement(L[len(L)/2:])
if tally > (len(L)/2):
print(L[i])
Этот код приводит к переполнению стека. Некоторые из того, как я не добираюсь до основания. Как остановить бесконечные рекурсивные вызовы?
Возможный дубликат [Найти мажоритарный элемент массива] (http://stackoverflow.com/questions/4325200/find-majority-element-in-array) –
Этот вопрос был для О (п) времени, который, поскольку O (nlogn) больше, чем это, он все еще работает. –