In che modo esattamente viene implementato il comando dict che ha una ricerca temporale lineare per le collisioni? Suppongo che sia implementato come un hashtable supportato da un elenco. Presumerei che una migliore implementazione sarebbe O (log (n)) per varie operazioni, usando invece una struttura ad albero per il retro della tabella. C'è qualcosa di magico dietro le quinte per mantenere vive le ricerche a tempo costante il più a lungo possibile?Perché la dict ha il caso peggiore O (n) per così tante operazioni?
mia fonte per questo, tra l'altro, è la seguente:
http://www.google.com/search?sourceid=chrome&ie=UTF-8&q=python+complexity
peggiore complessità nel caso non è l'unico fattore vale la pena ottimizzare. –
Re-hash lineare? – Pointy
"Presumo che una migliore implementazione sarebbe O (log (n)) per varie operazioni," Perché? Hai visto dei benchmark su questo? La mia comprensione è che il sondaggio "casuale" è in realtà il più veloce in media e porta a O (n) nel peggiore dei casi. Cosa stai assumendo e quali misure hai visto? –