Ho scoperto che max
è più lento rispetto alla funzione sort
in Python 2 e 3.Perché il massimo è più lento di ordinare?
Python 2
$ python -m timeit -s 'import random;a=range(10000);random.shuffle(a)' 'a.sort();a[-1]'
1000 loops, best of 3: 239 usec per loop
$ python -m timeit -s 'import random;a=range(10000);random.shuffle(a)' 'max(a)'
1000 loops, best of 3: 342 usec per loop
Python 3
$ python3 -m timeit -s 'import random;a=list(range(10000));random.shuffle(a)' 'a.sort();a[-1]'
1000 loops, best of 3: 252 usec per loop
$ python3 -m timeit -s 'import random;a=list(range(10000));random.shuffle(a)' 'max(a)'
1000 loops, best of 3: 371 usec per loop
Perché èmax
(O(n)
) più lento della funzione sort
(O(nlogn)
)?
Si esegue l'analisi Python 2 una volta e il codice Python 3 è esattamente lo stesso. – erip
'a.sort()' funziona sul posto. Prova 'ordinato (a)' –
@erip Ho risolto il problema – WeizhongTu