问题
对链表进行插入排序。
例子
思路
-
方法1
用指针sorted指向已经排序的最后一个位置
因为要插入,所有需要头结点和一个pre指针
-
方法2
代码
//方法1
class Solution {
public ListNode insertionSortList(ListNode head) {
if(head==null || head.next==null) return head;
ListNode h = new ListNode(-1);
h.next = head;
ListNode sorted = head;
ListNode pre = null;
while(sorted!=null && sorted.next!=null) {
if(sorted.val<=sorted.next.val) {
sorted = sorted.next;
continue;
}
pre = h;
while(pre.next.val<=sorted.next.val) pre = pre.next;
ListNode deal = sorted.next;
sorted.next = sorted.next.next;
deal.next = pre.next;
pre.next = deal;
}
return h.next;
}
}
//方法2