Sort a linked list using insertion sort.
思路:插入排序,每次都得从前往后扫,注意如何将待归位的点移至指定位置 time:O(n^2)
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) {
* val = x;
* next = null;
* }
* }
*/
public class Solution {
public ListNode insertionSortList(ListNode head) {
ListNode cur,q;
for(cur=head;cur!=null;cur=cur.next){
for(q=head;q!=cur&&q.val<=cur.val;q=q.next);
if(q!=cur){
int first=cur.val;
while(q!=cur){
int second=q.val;
q.val=first;
q=q.next;
first=second;
}
cur.val=first;
}
}
return head;
}
}