Come funziona l'ordinamento rapido:
1. Dividi: Scegli un elemento pivot dall'array (spesso l'ultimo elemento).
2. Partizione: Riorganizzare l'array in modo che tutti gli elementi inferiori al pivot siano a sinistra del pivot e tutti gli elementi maggiori del pivot siano a destra. L'elemento pivot è nella sua posizione ordinata finale.
3. Ricorso: Ripetere i due passaggi precedenti per i sottoarray sinistro e destro, suddividendoli ricorsivamente finché ciascun sottoarray non contiene un solo elemento.
Esempio 1:
Considera l'array [5, 3, 8, 2, 1, 4].
UN. Dividi:scegli l'ultimo elemento, 1 come pivot.
B. Partizione:
- Riorganizzare l'array:[3, 2, 1, 5, 4, 8] (1 è nella sua posizione ordinata).
C. Ricorsione:
- Sottoarray sinistro:[3, 2, 1] (già ordinato)
- Sottoarray destro:[5, 4, 8] (applica ricorsivamente l'ordinamento rapido)
Dopo aver applicato l'ordinamento rapido a entrambi i sottoarray, l'array ordinato finale è:[1, 2, 3, 4, 5, 8].
Esempio 2:
Ordinamento di un array più grande
Considera un array [7, 2, 9, 5, 3, 4, 1, 8, 6].
UN. Dividi:scegli l'ultimo elemento, 6, come perno.
B. Partizione:
- Riorganizzare l'array:[2, 5, 3, 4, 1, 7, 9, 6] (6 è nella sua posizione ordinata).
C. Ricorsione:
- Sottoarray sinistro:[2, 5, 3, 4, 1] (applica ricorsivamente l'ordinamento rapido)
- Sottoarray destro:[7, 9] (già ordinato)
Dopo aver completato le chiamate ricorsive, l'array ordinato è:[1, 2, 3, 4, 5, 6, 7, 8, 9].
Complessità temporale:
- Caso migliore:O(n log n)
- Caso medio:O(n log n)
- Caso peggiore:O(n^2) (si verifica quando l'array è già ordinato o invertito)
Nel complesso, l'algoritmo Quick Sort offre una soluzione di ordinamento efficiente con una buona complessità temporale nel caso medio di O(n log n). La sua semplicità e versatilità lo hanno reso un algoritmo popolare per l'ordinamento delle attività in vari linguaggi di programmazione.
Domanda © www.354353.com