leetcode:Insert Sort List

来源:互联网 发布:天星择日弧角算法 编辑:程序博客网 时间:2024/05/20 02:30

问题描述

对一个单链表进行插入排序,head指向第一个结点。

代码

/** * Definition for singly-linked list. * struct ListNode { *     int val; *     ListNode *next; *     ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {public:    ListNode *insertionSortList(ListNode *head) {if(!head||head->next==NULL)return head;ListNode *pstart=new ListNode(0);//添加一个头指针以方便处理,设所有节点数据大于0pstart->next=head;ListNode *preCur=head,*cur=head->next;while(cur!=NULL){    ListNode *prePos=pstart,* pos=pstart->next;while(pos->val<cur->val){prePos=prePos->next;//prePos指向带插入位置的前方pos=pos->next;//pos指向待插入位置的后方}if(pos!=cur){preCur->next=cur->next;cur->next=pos;prePos->next=cur;//preCur不变cur=preCur->next;}else{preCur=cur;cur=cur->next;}}head=pstart->next;delete pstart;return head;}};

时间复杂度

O(N^2),相对于顺序存储减少移动次数。
6 0
原创粉丝点击