Для массива с номерами "N" (N > 100). Как мы можем найти самые большие 10% из них по порядку? (если n/10 не является целым числом, мы можем его округлить)
Я придумал 3 алгоритма, чтобы попытаться решить указанную выше проблему, но я не уверен, какой из них является лучшим с точки зрения асимптотического времени работы. Могу ли я сделать какие-либо изменения, чтобы уменьшить асимптотическое время? Кроме того, если N становится действительно большим, какой алгоритм может быть эффективным?
Я перечисляю свои идеи для алгоритмов ниже и действительно могу использовать некоторую помощь для определения наиболее эффективного алгоритма для этого.
Algo-1
Я использовал сортировку сортировки и остановил ее, как только 10% номеров были отсортированы.
Algo-2
Я построил максимальную кучу и продолжал удалять самые большие 10% чисел
Algo-3
Не реализовано это, но идея, которую я имею, заключается в том, чтобы использовать любой алгоритм статистики порядка, чтобы найти раздел, содержащий 10% номеров, а затем сортировать их, используя сортировку слияния.