Je connais deux approches. La première: la documentation est hereDiscutez de la complexité de diverses méthodes python pour obtenir N éléments les plus importants d'une liste
heapq.nlargest(n, iterable, key=None)
et la seconde approche traditionnelle consistant à utiliser triée
sorted(iterable, key=key, reverse=True)[:K]
La documentation mentionne que ces deux sont équivalents. Cependant, je voulais juste savoir si la complexité des deux est la même ou si la première approche a été implémentée avec moins de complexité dans le temps.
Je me souviens de mon cours d'algorithmes que l'obtention de haut K éléments d'une liste peut être fait dans moins l'ordre des opérations par rapport à trier la liste complète, puis aller avec la cueillette haut K. -moi si je me trompe
Editer: Quelles librairies python standard peuvent effectuer cette tâche dans les opérations O (N) ou quelle est la meilleure complexité que nous pouvons obtenir de Python?
La documentation dit «équivalent» n'est pas identique, donc je suppose que la complexité temporelle est différente pour les deux. Voir [Time Complexity] (https://wiki.python.org/moin/TimeComplexity) – direprobs