用插入排序对链表排序
样例
Given 1->3->2->0->null
, return 0->1->2->3->null
插入排序
主要是怎么找到这个插入的位置,我一开始用了一种复杂的方法,没有调对,很气,这两天脑子有点糊,不适合学习,可能是快放寒假的原因。
ListNode * insertionSortList(ListNode * head) {
if(head==NULL)
return NULL;
ListNode *first=new ListNode(0);
while(head!=NULL)
{
ListNode *p=first;
while(p->next!=NULL&&p->next->val<head->val)
{
//这里用的是p->next的原因就是如果p的后面是NULL,的话,p也是要插入的!
p=p->next;
}
ListNode *tmp=head->next;
head->next=p->next;
p->next=head;
head=tmp;
}
return first->next;
}
网友评论