没有加头指针
public ListNode insertionSortList(ListNode head) {
if(head == null){
return head;
}
ListNode point = head;
ListNode tail = head;
int count = 0;
while(tail.next != null){
point = tail.next;
count++;
if(point.val >= tail.val){
tail = tail.next;
continue;
}
tail.next = point.next;
if(point.val < head.val){
point.next = head;
head = point;
}else{
ListNode p = head;
for(int i = 1;i < count;i++){
if(point.val < p.next.val){
point.next = p.next;
p.next = point;
break;
}
p = p.next;
}
}
}
return head;
}
加头指针(性能下降不少……
public ListNode insertionSortList(ListNode head) {
if(head == null){
return head;
}
ListNode point = new ListNode(0);
ListNode h = point;
h.next = head;
ListNode tail = head;
int count = 0;
while(tail.next != null){
point = tail.next;
count++;
if(point.val >= tail.val){
tail = tail.next;
continue;
}
tail.next = point.next;
ListNode p = h;
for(int i = 0;i < count;i++){
if(point.val < p.next.val){
point.next = p.next;
p.next = point;
break;
}
p = p.next;
}
}
return h.next;
}