您的位置:首页 > 其它

【LeetCode】Insertion Sort List

2014-08-11 00:19 337 查看
Sort a linked list using insertion sort.

我自己AC的代码花费的时间比较长,下面是看了博客http://www.cnblogs.com/TenosDoIt/p/3422296.html
之后重新写的

class Solution {
public:
ListNode *insertionSortList(ListNode *head) {
if (head == NULL || head->next == NULL) {
return head;
}

ListNode *sorted_head = head;
ListNode *sorted_rear = head;
ListNode *unsorted = head->next;

while (unsorted) {
ListNode *cur = unsorted;
unsorted = unsorted->next;

if (cur->val <= sorted_head->val) {
cur->next = sorted_head;
sorted_head = cur;
} else if (sorted_rear->val <= cur->val) {
sorted_rear->next = cur;
sorted_rear = cur;
} else {
ListNode *less = sorted_head;
while (less->next && less->next->val < cur->val) {
less = less->next;
}
cur->next = less->next;
less->next = cur;
}
}
sorted_rear->next = NULL;
return sorted_head;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: