Insertion Sort List:Sort a linked list using insertion sort.
题意:使用插入排序的方式对链表进行排序。
思路:根据插入排序的思路,进行插入操作。
代码:
public ListNode insertionSortList(ListNode head) { if(head==null||head.next==null) return head; ListNode p = head.next; //指向第2个结点 ListNode q= head; //指向头结点 ListNode preq= null; ListNode pNext = null; head.next = null; //将head.next置空,使头结点和链表断开 while(p!=null){ //用p进行遍历 q = head; //用q保存头结点 pNext = p.next; //pNext保存p.next while(q!=null && p.val>q.val){ //在新的链表中查找小于等于p.val的节点 preq = q; q=q.next; } if(q==head){ //如果是头结点,则将其插入到头结点 p.next = q; head = p; }else{ //否则进行普通的插入操作 p.next = preq.next; preq.next = p; } p=pNext; } return head; }