题目描述
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(head==null||head.next==null)
return head;
//带排序链表头结点
ListNode cur = head.next;
//已排序链表
ListNode sort_head = new ListNode(0),location = null,location_before = null;
sort_head.next = head;
head.next = null;
while(cur!=null){
//每次从头结点开始扫描
location_before = sort_head;
location = sort_head.next;
//找插入位置
while(location!=null && location.val<=cur.val){
location_before = location;
location = location.next;
}
//插入到排序链表中
location_before.next = cur;
cur = cur.next;
location_before.next.next = location;
}
return sort_head.next;
}
}