/**
* 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)
return head;
ListNode* helper = new ListNode(0); // 添加头结点
helper->next = head;
ListNode *prior = head,
*ptr = head->next;
while (ptr){
if (prior->val <= ptr->val){
prior = ptr;
ptr = ptr->next;
}
else{
prior->next = ptr->next;
ListNode* tmp = helper;
while (tmp->next->val <= ptr->val)// 稳定排序 "<="
tmp = tmp->next;
ptr->next = tmp->next;
tmp->next = ptr;
ptr = prior->next;
}
}
return helper->next;
}
};
147. Insertion Sort List
最新推荐文章于 2017-02-09 19:08:25 发布