码迷,mamicode.com
首页 > 其他好文 > 详细

leetcode 147. Insertion Sort List

时间:2015-01-15 00:15:03      阅读:272      评论:0      收藏:0      [点我收藏+]

标签:

Sort a linked list using insertion sort.

链表插入排序,和数组插入排序类似,但是不需要移动元素,从前向后比较并插入即可。

内外两层循环,时间复杂度O(n^2)

1、使用dummy节点。 2、为便于插入,pre指针指向外层循环节点

 1 ListNode *insertionSortList(ListNode *head) 
 2     {
 3         ListNode *dummy = new ListNode(INT_MIN), *p, *q, *pre;
 4         dummy->next = head;
 5 
 6         pre = dummy;
 7         q = pre->next;
 8         while (q != NULL)
 9         {
10             p = dummy;
11             while (p->next != q)
12             {
13                 if (q->val < p->next->val)
14                 {
15                     pre->next = q->next;
16                     q->next = p->next;
17                     p->next = q;
18                     q = pre->next;
19                     break;
20                 }
21                 p = p->next;
22             }
23             if (p->next == q)
24             {
25                 pre = q;
26                 q = pre->next;
27             }
28         }
29         p = dummy->next;
30         delete dummy;
31         return p;
32     }

 

leetcode 147. Insertion Sort List

标签:

原文地址:http://www.cnblogs.com/ym65536/p/4225026.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!