LeetCode:Insertion Sort List (Java)

来源:互联网 发布:淘宝热卖排行榜前十 编辑:程序博客网 时间:2024/06/03 09:15

题目:

Insertion Sort List

Sort a linked list using insertion sort.


思路:

算法导论讲的插入排序方法当一个数插入已排序数里面的时候是从后往前比较,知道找到合适位置。但是单链表是无法从后往前比较的。但是插入排序既可以从后往前比较,也可以从前往后比较。明白这点,对单链表插入排序应该就没什么难度了。


代码:

/** * Definition for singly-linked list. * public class ListNode { *     int val; *     ListNode next; *     ListNode(int x) { *         val = x; *         next = null; *     } * } */public class Solution {    public ListNode insertionSortList(ListNode head) {        if(null == head || null == head.next) return head;                ListNode sortedNode = head;        ListNode temp = null;        for(ListNode i=head;i!=null;) {            if(i.next !=null && i.next.val < sortedNode.val) {                if(head.val >= i.next.val) {                    temp = i.next;                    i.next = i.next.next;                    temp.next = head;                    head = temp;                    continue;                }                ListNode cursor = head;                while(!(cursor.val <= i.next.val && cursor.next.val >= i.next.val)) cursor = cursor.next;                temp = i.next;                i.next = i.next.next;                temp.next = cursor.next;                cursor.next = temp;                continue;            }            i=i.next;            sortedNode = i;        }        return head;    }}


0 0
原创粉丝点击