Я был недавно отклонен от потенциального работодателя после отправки этого кода.Они предположили, что я недостаточно технически способен.Мне интересно, если кто-то может пролить свет на то, как сделать это лучше / эффективнее.
Вопрос был в том, чтобы найти N длинных строк из файла из нескольких строк.В конечном итоге это сводилось к проблеме сортировки, поэтому я построил алгоритм для поиска N самых больших чисел из списка чисел следующим образом:
def selection(numbers, n):
maximum = []
for x in range (0, n):
maximum.append(numbers[x])
ind = x
for y in range ( x, len(numbers) ):
if numbers[y] > maximum[len(maximum)-1]:
maximum[len(maximum)-1] = numbers[y]
numbers[ind], numbers[y] = numbers[y], numbers[ind]
return maximum
Это работает в O (n) , если только N = n, в этом случае он работает в O (n ^ 2) .Я был удивлен, услышав, что они сомневаются в моих технических способностях, поэтому я подумал, что принесу это вам ТАК.Как мне сделать это лучше?
РЕДАКТИРОВАТЬ: Спасибо за отзыв.Для пояснения: я заполнил список построчными подсчетами слов из файла и провел его через эту функцию.
РЕДАКТИРОВАТЬ 2: Некоторые люди упоминали синтаксис.Я занимался Python всего день или два.Мой работодатель предложил мне написать его на Python (и я упомянул, что я не знаю Python), поэтому я предположил, что небольшие синтаксические ошибки и методы не будут такой проблемой.
EDIT3Оказывается, мои первоначальные рассуждения были ошибочны с сортировкой выбора.У меня было в голове, что минимальная куча будет nlogn, но я забыл, что средняя сложность для моего кода n ^ 2.Спасибо всем за помощь.