[leetcode]Insertion Sort List @ Python

时间:2014-07-22 23:11:32   收藏:0   阅读:411

原题地址:http://oj.leetcode.com/problems/insertion-sort-list/

题意:对链表进行插入排序。

解题思路:首先来对插入排序有一个直观的认识,来自维基百科。

                                        mamicode.com,码迷

代码循环部分图示:

mamicode.com,码迷

代码:

mamicode.com,码迷
class Solution:
# @param head, a ListNode
# @return a ListNode
    def insertionSortList(self, head):
        if not head:
            return head
        dummy = ListNode(0)                         #为链表加一个头节点
        dummy.next = head
        curr = head
        while curr.next:
            if curr.next.val < curr.val:            #如果链表是升序的,那么curr指针一直往后移动
                pre = dummy                         #直到一个节点的值小于前面节点的值
                while pre.next.val < curr.next.val: #然后寻找插入的位置
                    pre = pre.next
                tmp = curr.next                     #上面的示意图就是以下这段代码
                curr.next = tmp.next
                tmp.next = pre.next
                pre.next = tmp
            else:
                curr = curr.next
        return dummy.next
mamicode.com,码迷

 

[leetcode]Insertion Sort List @ Python,码迷,mamicode.com

评论(0
© 2014 mamicode.com 版权所有 京ICP备13008772号-2  联系我们:gaon5@hotmail.com
迷上了代码!