List* merge(List* Head, List* Tail) {
if (!Head) return Tail;
if (!Tail) return Head;
if (Head->car < Tail->car) return cons(Head->car, merge(Head->cdr, Tail));
else return cons(Tail->car, merge(Head, Tail->cdr));
}
List* sort(List* List, int len) {
if (len == 1) {
List->cdr = NULL;
return List;
}
int len2 = len/2;
int len1 = len - len2;
return merge(sort(List,len1), sort(nth_cdr(List,len1), len2));
}
재귀 개꿀 ㅎ
댓글 0