Domanda

“Scostante Algoritmi per la Wizards” libro di testo di Piton rivendica il tempo di esecuzione di merge sort è O (n ^ 4). È questa affermazione corretta?

Soluzione: Sì. Questa affermazione è tecnicamente corretta, perché O (n ^ 4) dà solo una tomaia vincolato per quanto tempo l'algoritmo prende. Tuttavia, si tratta di una risposta odioso inutile, dal momento che la stretta bound è Θ(n log n).

Io non sono molto capire quale sia la soluzione sta affermando. Come può O (n ^ 4) essere corretto?

È stato utile?

Soluzione

notazione O-grande è un limite superiore sul caso peggiore per un runtime algoritmo.

Da O (n ^ 4) è superiore al tempo peggiore caso di Mergesort è tecnicamente corretto perché fornisce una bound - ie. Mergesort non avrà mai una performance peggiore di O (n ^ 4).

Tuttavia, è inutile, perché una migliore espressione del tempo di esecuzione è O (n log n), che è il "più stretto" legato per merge sort

Altri suggerimenti

Big-O è un insieme, che comprende tutto ciò che corre veloce come (foo) o più veloce. Little-O è un insieme di cose che funzionano più velocemente di quanto strettamente (foo). Mentre è corretto dire mergesort è O (n ^ 4), non è molto utile, perché è Theta (n log n). Dire che Mergesort è O (n ^ 4) è leggermente più utile, perché poco-o notazione è mai usata per implicare big-theta runtime.

Altre questioni di complicazione, O-grande è spesso utilizzato quando big-theta sarebbe più appropriato, solo perché la maggior parte delle tastiere non hanno un theta.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top