147. Insertion Sort List

Difficulty:
Related Topics:
Similar Questions:

Problem

Sort a linked list using insertion sort.

A graphical example of insertion sort. The partial sorted list (black) initially contains only the first element in the list. With each iteration one element (red) is removed from the input data and inserted in-place into the sorted list

Algorithm of Insertion Sort:

Example 1:

Input: 4->2->1->3
Output: 1->2->3->4

Example 2:

Input: -1->5->3->4->0
Output: -1->0->3->4->5

Solution

/**
 * Definition for singly-linked list.
 * function ListNode(val) {
 *     this.val = val;
 *     this.next = null;
 * }
 */
/**
 * @param {ListNode} head
 * @return {ListNode}
 */
var insertionSortList = function(head) {
  var newHead = new ListNode(0);
  var now = head;
  var next = null;
  var tmp = null;
  while (now) {
    next = now.next;
    tmp = newHead;
    while (tmp.next && tmp.next.val < now.val) {
      tmp = tmp.next;
    }
    now.next = tmp.next;
    tmp.next = now;
    now = next;
  }
  return newHead.next;
};

Explain:

nope.

Complexity: