¿Por qué la complejidad del espacio de fusión O (log (n)) con listas vinculadas?
Mergesort en una matriz tiene una complejidad espacial de O (n), mientras que mergesort en una lista vinculada tiene una complejidad espacial de O (log (n)), documentadoaquí
Creo que entiendo el caso de la matriz, porque necesitamos almacenamiento auxiliar al fusionar las dos sub-matrices. Pero, ¿no se combinaría una lista vinculada para fusionar las dos listas subenlazadas en su lugar? Creo que esto tendría una complejidad espacial O (1) para crear una nueva cabeza.
Combinación en el lugar (sin almacenamiento auxiliar):
public Node merge(Node a, Node b) {
Node dummyHead, curr; dummyHead = new Node(); curr = dummyHead;
while(a !=null && b!= null) {
if(a.info <= b.info) { curr.next = a; a = a.next; }
else { curr.next = b; b = b.next; }
curr = curr.next;
}
curr.next = (a == null) ? b : a;
return dummyHead.next;
}
Una explicación sería genial.