Mergesort на массиве имеет пространственную сложность O (n), в то время как mergesort в связанном списке имеет пространственную сложность O (log (n)), документированный здесь
Я считаю, что я понимаю случай массива, потому что нам нужно дополнительное хранилище при слиянии двух подматриц. Но не будет ли связанный список слияния сортировать, просто объединить два связанных с ним списков? Я думаю, что это создало бы пространственную сложность O (1) для создания новой головы.
На месте слияния (без дополнительного хранилища):
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;
}
Объяснение будет большим.