Forum de l’article
ISSN 2271-3905
Cliquez ici si vous voulez visiter mon autre site, orienté vers des sujets moins techniques.
Cher Laurent,
un article très intéressant comme souvent et juste pour le plaisir de te contredire, j’ai pris la peine de faire ton exercice d’une façon "pythonique" à laquelle tu pourras reprocher que d’un point de vue éducatif c’est une non réponse... Mais c’est juste ma réponse ultra-intuitive à ton problème sans avoir cherché à optimiser du tout. On n’est certes pas au niveau du C mais 3 minutes sur mon portable mac, c’est pas trop mal.
import random
def gen(n) :
l=[]
for i in range(n) :
l.append(random.randint(1000000000)
return l
# assez long (5-6 minutes)
l=gen(200000000)
# environ 3min 15s
l2=sorted(l)
Raynald
PS mon indentation n’est pas conservée, je ne sais comment faire
Merci Raynald de cette contribution. Cela dit, il ne s’agit pas d’une fonction de tri en Python, mais de l’invocation de la fonction intégrée sorted
, dont je doute qu’elle soit écrite en Python. C’est ainsi que Python parvient à satisfaire ses utilisateurs, beaucoup de choses sont écrites en C dans les coulisses. Biopython en est un excellent exemple : derrière les appels Python on trouve les logiciels habituels, BLAST, PHYLIP, etc. C’est, à plus grande échelle, ce que Catherine Letondal avait développé à l’Institut Pasteur en Perl (et en d’autres temps).
C’est certain. J’ai eu à faire une fois une extension en C pour utiliser une librairie C, j’ai utilisé Cython (https://cython.org/). C’était vraiment simple à mettre en oeuvre et très naturel à utiliser en python. Plus récemment je suis tombé sur ce projet, Nuitka (http://nuitka.net/doc/user-manual.html), qui est très impressionnant mais je n’ai pas pris le temps de tester ton exemple.
Raynald
Le source de sorted
est ici :
https://github.com/python/cpython/blob/d246a6766b9d8cc625112906299c4cb019944300/Python/bltinmodule.c#L2236-L2237
Voici une page assez complète sur le tri en Python, fonctions natives et fonctions en Python :