le temps de la complexité de la fusion de tri
pourquoi la complexité du temps de meilleur des cas, de haut en bas de fusion de tri est en O(nlogn)?
je pense que le meilleur des cas, de haut en bas de fusion de tri est de 1, seulement le besoin de comparer 1 fois.
comment à propos de la complexité du temps de du bas jusqu'à la fusion de tri dans le pire des cas, dans le meilleur des cas et de la moyenne des cas.
Une autre question est pourquoi chaque itération prend exactement O(n)? peut-on aider?
O(1)
? Peut-êtreO(n)
par le prétraitement et la vérification le tableau est déjà trié.- "meilleur des cas" signifie, "le meilleur des cas étant donné que la taille de l'entrée est
n
", pas de "meilleur des cas, en supposant qu'il y a seulement 2 éléments à trier". - Décrivez votre algorithme que vous pensez qu'il O(1) et nous pouvons sans doute vous dire où il est mal...
- À moins que l'algorithme s'avère être une sorte de seau de tri, il n'y a pas "probablement" 🙂
- en.wikipedia.org/wiki/Merge_sort pour tous les renseignements que vous voudrez probablement (incroyable ce que google va faire pour vous).
Vous devez vous connecter pour publier un commentaire.
Parce qu'à chaque itération, vous diviser le tableau en deux sous-listes, et appeler récursivement l'algorithme. Dans le meilleur des cas vous diviser exactement à la moitié, et ainsi de vous réduire le problème (de chaque appel récursif) à la moitié du problème. Vous avez besoin log_2(n) itérations, et à chaque itération prend exactement
O(n)
(chaque itération est sur toutes les sous-listes, la taille totale est de toujoursn
), donc au totalO(nlogn)
.Cependant, avec un simple prétraitement pour vérifier si la liste est déjà triée - elle peut être réduite à
O(n)
.Depuis de vérifier si une liste est triée est lui-même
O(n)
- il ne peut pas être fait dansO(1)
. Notez que le "meilleur des cas" est le "meilleur des cas" pourn
, et pas une taille spécifique.La même approche peut vous donner O(n) dans le meilleur des cas de bas en haut (simple pré-traitement). Le pire des cas et dans le meilleur des cas des bas jusqu'à la fusion de tri est
O(nlogn)
- car dans cette approche, la liste est toujours divisée en 2 parts égales de longueur (à la différence 1) les listes.i
tels que2^(i-1) = n
. depuis2^logn == n
, nous concluonsi = logn+1
- de sorte que le nombre total d'itérations estO(logn)
La même pour les arbres binaires