[Python] Algoritmo in CSV
Pietro Battiston
me a pietrobattiston.it
Sab 4 Set 2010 00:42:48 CEST
Il giorno ven, 03/09/2010 alle 21.44 +0200, Pietro Zambelli ha scritto:
> In data venerdì 3 settembre 2010 21:10:11, Giuseppe Amato ha scritto:
> > >Ma il problema vero è che il sort ha costo più che lineare, mentre il
> > >
> > >max ha costo lineare
> >
> > Non mi sono mai occupato di max finding quindi non so se è più veloce o
> > meno, ho cercato qualcosa, ma con scarsi risultati, mi puoi indicare
> > qualche risorsa dove trovare informazioni?
> >
> > Però mi sono occupato di sorting e il caso O(n) è uno dei peggiori
> > (utilizzando algoritmi shell sort o quick sort), mentre O(log(n)) è più
> > probabile ed è comunque minore di O(n) (200x2e6=2e8,
> > 200xlog(2e6)=~1300,2e6xlog(200)=~4e6).
> >
> > Ma ripeto potrei sbagliare, allora ho scritto il semplice script di seguito
> > e vi consiglio di provarlo e confrontare i risultati.
> >
> >
> >
> > #------------
> >
> > import time
> >
> > import random
> >
> >
> >
> > n=2000000
> >
> > lista=[]
> >
> > for i in range(n):
> >
> > lista.append(random.randint(0,10000000))
> >
> >
> >
> > print 'Lista generata'
> >
> > start=time.clock()
> >
> > max(lista)
> >
> > print 'Max time:',time.clock()-start
> >
> >
> >
> > start=time.clock()
> >
> > print 'Sort time:',time.clock()-start
> >
> > #-----------------
> >
> >
> >
> > Il sort vince sempre, va pari se invece di interi si devono confrontare
> > classi. Ma il nostro amico doveva valutare interi se non ho capito male.
>
> manca l'ordinamento della lista...
Ah, ecco...
(il bello è che io l'avevo aggiunto, ma sbadatamente _prima_ di
"start=time.clock()"...)
> se aggiungi lista.sort() io ottengo:
>
> Lista generata
> Max time: 0.09
> Sort time: 2.52
>
... che in effetti è dell'ordine di grandezza di...
In [1]: 0.09 * log(2000000, 2)
Out[1]: 1.8838411712391756
ciao
Pietro
Maggiori informazioni sulla lista
Python