题目传送: https://leetcode.cn/problems/insertion-sort-list/
运行效率:
代码如下:
class Solution {
public ListNode insertionSortList(ListNode head) {
// 处理边界情况
if (head == null || head.next == null) {
return head;
}
ListNode newHead = new ListNode(head.val);
head= head.next;
while (head != null) {
ListNode listNode = new ListNode(head.val);
newHead = change(newHead, listNode);
head = head.next;
}
return newHead;
}
//插入排序,把node插入到新链表的适当的位置
public ListNode change(ListNode head, ListNode node) {
// 处理边界情况
if (head.val >= node.val) {
node.next = head;
return node;
}
ListNode cur = head;
ListNode prev = head;
// 先找到node应该插入的位置
while (cur != null) {
if (cur.val < node.val) {
prev = cur;
cur = cur.next;
} else {
break;
}
}
prev.next = node;
node.next = cur;
return head;
}
}