147 Insertion Sort List
在链表中实现插入排序
Python
# Definition for singly-linked list.
# class ListNode(object):
# def __init__(self, x):
# self.val = x
# self.next = None
class Solution(object):
def insertionSortList(self, head):
"""
:type head: ListNode
:rtype: ListNode
"""
dummyHead = ListNode(0)
dummyHead.next = head
p = head
while p and p.next:
if p.val <= p.next.val:
p = p.next
else:
temp = p.next
q = dummyHead
p.next = p.next.next
while q.next.val < temp.val:
q = q.next
temp.next = q.next
q.next = temp
return dummyHead.next
Java
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) { val = x; }
* }
*/
class Solution {
public ListNode insertionSortList(ListNode head) {
ListNode dummyHead = new ListNode(-1);
dummyHead.next = head;
ListNode p = head;
while(p != null && p.next != null){
if(p.val <= p.next.val){
p = p.next;
}
else{
ListNode temp = p.next;
ListNode q = dummyHead;
p.next = p.next.next;
while(q.next.val < temp.val){
q = q.next;
}
temp.next = q.next;
q.next = temp;
}
}
return dummyHead.next;
}
}