Comb sort: differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
Creazione della voce |
m Bot: sostituzioni standard |
||
Riga 1:
In [[Informatica]], '''comb sort''' è un algoritmo di ordinamento ideato da [[Stephen Lacey]] e [[Richard Box]], nell' Aprile 1991. Comb sort migliora l'algoritmo [[bubble sort]] e compete in velocità con algoritmi storicamente veloci come il [[Quicksort]]. L'idea basilare dell'algoritmo è quella di eliminare le cosidette ''tartarughe'', ovvero valori piccoli vicino la fine della lista, essendo provato che in un bubble sort questi valori tendono spessissimo a scendere nella loro posizione in modo tremendamente lento. (i ''conigli'', ovvero grandi valori all'inizio della lista, non rappresentano un problema nel bubble sort
Nel bubble sort, quando vengono confrontati due elementi, essi hanno sempre un ''gap'' (distanza reciproca) pari ad 1. L'idea alla base del comb sort è che il gap può essere anche maggiore. (Anche lo [[Shell sort]] è basato su questa idea, ma esso rappresenta una modifica dell'[[insertion sort]] piuttosto che del bubble sort).
L'intervallo di confronto comincia come la lunghezza dell'array da ordinare, divisa per il ''fattore shrink'' (generalmente 1,3), e la lista viene ordinata con tale intervallo (arrotondato per difetto all'intero, se necessario). Alchè esso viene diviso nuovamente per il fattore Shrink, e la lista viene ordinata con questo nuovo intervallo. Il processo si ripete
== Fattore Shrink ==
Il fattore Shrink ha un grande peso sull'efficienza del comb sort. Ai tempi della sua creazione, gli autori suggerirono 1.3 in base a delle prove sperimentali basate sulla casualità. Un valore troppo piccolo degrada l'algoritmo
Il valore consigliato come fattore è <math>1/(1-\frac{1}{e^\varphi}) \approx 1.247330950103979</math>.
Riga 13:
Con un fattore di 1,3, ci sono solo tre possibili modi di concludere una lista di intervalli: (9, 6, 4, 3, 2, 1), (10, 7, 5, 3, 2, 1), oppure (11, 8, 6, 4, 3, 2, 1). Soltanto l'ultima sequenza uccide tutte le tartarughe prima che il gap divenga 1. Ragion per cui, si hanno miglioramenti significativi in velocità se l'intervallo viene settato ad 11 ogni qual volta esso debba diventare 9 o 10. Questa variazione è chiamata Combsort11.
Questo si nota anche
== Pseudocode example of combsort11 ==
|