Home Hardware Networking Programmazione Software Domanda Sistemi
Conoscenza del computer >> software >> Quicktime >> .

Qual è la complessità temporale dell'algoritmo QuickSort in termini di notazione grande?

La complessità temporale di QuickSort, espressa in notazione Big O, varia a seconda dei dati di input:

* Caso migliore: O (n log n)

* Caso medio: O (n log n)

* Caso peggiore: O (n^2)

Ecco una rottura:

* Caso migliore e caso medio (O (n log n)): Ciò si verifica quando l'elemento pivot scelto ad ogni passaggio divide l'array in metà approssimativamente uguale. In questo scenario, l'algoritmo fa log n chiamate ricorsive (perché sta dimezzando efficacemente la dimensione del problema) e ogni livello di ricorsione richiede un lavoro O (n) per partizionare l'array. Pertanto, la complessità temporale complessiva è O (n log n).

* Caso peggiore (o (n^2)): Ciò accade quando l'elemento perno è ripetutamente l'elemento più piccolo o più grande nell'array. Questo porta a partizioni molto irregolari. In sostanza, invece di dividere l'array a metà, stai riducendo solo la dimensione del problema di un elemento ogni volta. Ciò si traduce in N chiamate ricorsive e ogni chiamata richiede ancora il tempo di O (n) per la partizione (perché stai confrontando quasi tutti gli elementi). Di conseguenza, la complessità del tempo complessivo si degrada a O (n^2).

Mitigazione dello scenario peggiore:

Lo scenario peggiore può essere mitigato da:

* Selezione per giri randomizzata: Scegliere il perno in modo casuale aiuta a evitare costantemente di scegliere l'elemento più piccolo o più grande, rendendo molto meno probabile il caso O (n^2).

* Selezione mediana di tre perni: Selezionando la mediana del primo, medio e ultimo elementi dell'array come perno può anche aiutare a evitare scelte di perno costantemente cattive.

In pratica, QuickSort è spesso molto efficiente a causa della sua buona prestazione media e del fatto che tende ad avere fattori costanti più bassi rispetto ad altri algoritmi di smistamento O (n log n) come un po '. Tuttavia, è importante essere consapevoli del potenziale per il comportamento peggiore di O (N^2).

 

software © www.354353.com