题目描述:
Sort a linked list using insertion sort.
题目分析:
这是利用插入法对链表排序,思路比较简单。直接上代码。
public ListNode insertionSortList(ListNode head) {
if(head==null||head.next==null)
return head;
ListNode right=head.next;//未处理节点的头指针
ListNode left=head;//已处理节点的头指针
left.next=null;
while(right!=null){
//查找新节点应插入的位置
if(right.val>left.val){
while(left.next!=null&&left.next!=right){
if(right.val>left.next.val){
left=left.next;
}
else break;
}
ListNode rightNext=right.next;
ListNode leftNext=left.next;
left.next=right;
right.next=leftNext;
right=rightNext;
left=head;
}else{//新节点要插入头部
ListNode rightNext=right.next;
right.next=left;
//left.next=rightNext;
head=right;
right=rightNext;
left=head;
}
}
return head;
}