Fusion de Tri du Temps et de l'Espace de la Complexité

Profitons de cette mise en œuvre de la Fusion de Tri comme un exemple

void mergesort(Item a[], int l, int r) {
if (r <= l) return;
int m = (r+l)/2;
mergesort(a, l, m);  ------------ (1)
mergesort(a, m+1, r); ------------(2)
merge(a, l, m, r);

a) Le moment de la complexité de cette opération de Tri est O(nlg(n)). Va parallélisation (1) et (2) donner à toute pratique de gain ? Theorotically, il semble que, après la parallélisation eux aussi vous vous retrouvez en O(nlg(n). Mais pratiquement, pouvons-nous obtenir les gains ?

b) l'Espace de la complexité de cette opération de Tri ici est O(n). Cependant, si j'ai choisi d'effectuer place de fusion de trier en utilisant les listes chaînées (je ne sais pas si on peut le faire avec des tableaux raisonnablement) l'espace complexité O(lg n)), puisque vous avez à prendre en compte la récursivité de la pile la taille d'image ?
Peut-on traiter O(lg(n)) comme une constante, car il ne peut pas être plus de 64 ? J'ai peut-être mal compris ce à quelques endroits. Quelle est exactement la signification de 64 ?

c) http://www.cprogramming.com/tutorial/computersciencetheory/sortcomp.html dit de fusion le tri exige une constante de l'espace à l'aide de listes chaînées. Comment ? Ont-ils traiter O(lg n) constante ?

d) [Ajouté pour avoir plus de clarté] Pour l'espace de la complexité de calcul est-il juste de supposer l'entrée de tableau ou de la liste est déjà en mémoire ? Quand je fais de la complexité des calculs, j'ai toujours calculer le "plus" de l'espace, je vais avoir besoin en plus de l'espace déjà prises par entrée. Sinon, l'espace de la complexité sera toujours en O(n) ou pour le pire.

InformationsquelleAutor Frank Q. | 2012-04-26