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

Leetcode Insertion Sort List

时间:2014-05-09 05:16:22      阅读:327      评论:0      收藏:0      [点我收藏+]

标签:class   code   tar   ext   c   art   

Sort a linked list using insertion sort.

链表的插入排序,其实有2种特殊情况:

1、插入的值插入到已排序的末尾。

2、插入的值插入到已排序的最前端。

主要设置了3个指针。

1、pStart是已排序链表的开始位置。

2、pInsert是待插入的位置。

3、pEnd是下一个等待排序的位置。

key:每个已排序的链表最后的Node的next指针为null。这样可以防止循环链表,已得不到正确值。


public class Solution {
     public ListNode insertionSortList(ListNode head) {
        if(head == null||head.next == null)return head;
        ListNode pStart = head;
        ListNode pInsert = head.next;
        pStart.next = null;
        ListNode pEnd = head;
        while(pInsert != null)
        {
            pEnd = pInsert.next;
            pStart = sort(pStart,pInsert);
            pInsert = pEnd;
        }
        head = pStart;
        return head;
    }
   
    public ListNode sort(ListNode head,ListNode insert)
    {
        ListNode start = head;
        ListNode pStr = head;
        if(head == null)return head;
        while(start.val < insert.val && start.next != null)
        {
            pStr = start;
            start = start.next;
        }
        if(start.val >= insert.val && start == head)
        {
            insert.next = head;
            head = insert;
        }
        else if(start.val >= insert.val)
        {
            pStr.next = insert;
            insert.next = start;
        }
        else if(start.next == null)
        {
            start.next = insert;
            insert.next = null;
        }
        return head;
    }
}

Leetcode Insertion Sort List,布布扣,bubuko.com

Leetcode Insertion Sort List

标签:class   code   tar   ext   c   art   

原文地址:http://www.cnblogs.com/jessiading/p/3715982.html

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