插入排序算法:
插入排序是迭代的,每次只移動一個元素,直到所有元素可以形成一個有序的輸出列表。
每次迭代中,插入排序只從輸入數據中移除一個待排序的元素,找到它在序列中適當的位置,並將其插入。
重複直到所有輸入數據插入完爲止。
來源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/insertion-sort-list
著作權歸領釦網絡所有。商業轉載請聯繫官方授權,非商業轉載請註明出處。
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) { val = x; }
* }
*/
class Solution {
public ListNode insertionSortList(ListNode head) {
ListNode dummy = new ListNode(0);
while(head!=null) {
ListNode p = dummy;
while(p.next!=null && p.next.val<=head.val) p = p.next;
ListNode q = head;
head = head.next;
q.next = p.next;
p.next = q;
}
return dummy.next;
}
}