1、题目描述
给一个链表,实现它的插入排序
2、思路
复杂度O(n^2)。
对于每个节点,都在已经排好序的链表中找到它应该在的位置,将其插入,形成长度加1的新的有序链表。
重复上述操作,直至所有节点都被插入。
3、代码
ListNode* insertionSortList(ListNode* head) {
ListNode* ans = new ListNode(-1);
if(!head) return NULL;
ans->next = head;
head = head->next;
ans->next->next = NULL;
while(head){
ListNode* p = ans;
while(p->next && p->next->val < head->val)
p=p->next;
ListNode* r = p->next;
p->next = head;
head = head->next;
p = p->next;
p->next = r;
}
return ans->next;
}