用插入排序对链表排序
样例
样例
Given 1->3->2->0->null, return 0->1->2->3->null
import java.util.Scanner;
/**
*
* 用插入排序对链表排序
样例
Given 1->3->2->0->null, return 0->1->2->3->null
* @author Dell
*
*/
public class Test173 {
public static ListNode insertionSortList(ListNode head)
{
if(head==null||head.next==null)
return head;
ListNode result= new ListNode(-1);
ListNode first=head;
head=head.next;
first.next=null;
result.next=first;
ListNode p=head;
ListNode q=null;
while(p!=null)
{
q=p.next;
p.next=null;
ListNode r=result;
while(r.next!=null&&r.next.val<p.val)
{
r=r.next;
}
p.next=r.next;
r.next=p;
p=q;
}
return result.next;
}
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
int n=sc.nextInt();
ListNode list=new ListNode(-1);
ListNode p=list;
for(int i=0;i<n;i++)
{
ListNode temp=new ListNode(sc.nextInt());
p.next=temp;
p=p.next;
}
ListNode result=insertionSortList(list.next);
while(result!=null)
{
System.out.print(result.val+" ");
result=result.next;
}
}
}