美文网首页
147. Insertion Sort List

147. Insertion Sort List

作者: jluemmmm | 来源:发表于2021-10-04 14:05 被阅读0次

对链表进行插入排序。

插入排序的基本思想是,维护一个有序序列,初始时有序序列只有一个元素,每次将一个新的元素插入到有序序列中,将有序序列的长度增加1,直到全部元素都加入到有序序列中。

如果是数组的插入排序,则数组前面部分是有序序列,每次找到有序序列后面的第一个元素的插入位置,将有序序列中的插入位置后面的元素都往后移动一位。然后将待插入元素置于插入位置。

对于链表而言,插入元素只要更新相邻节点的指针即可,不需要像数组一样将插入位置后面的元素往后移动,因此插入操作的时间复杂度是 O(1),但是找到插入位置 需要遍历链表中的节点,时间复杂度是O(n),因此链表插入排序的总时间 复杂度是 O(n^2)

  • 时间复杂度O(n^2),空间复杂度O(1)
  • Runtime: 143 ms, faster than 28.66%
  • Memory Usage: 41.1 MB, less than 59.76%
/**
 * Definition for singly-linked list.
 * function ListNode(val, next) {
 *     this.val = (val===undefined ? 0 : val)
 *     this.next = (next===undefined ? null : next)
 * }
 */
/**
 * @param {ListNode} head
 * @return {ListNode}
 */
var insertionSortList = function(head) {
  if (!head) return head;
  let dummyHead = new ListNode(0);
  dummyHead.next = head;
  let lastSorted = head;
  let cur = head.next;
  while (cur) {
    if (lastSorted.val <= cur.val) {
      lastSorted = lastSorted.next;
    } else {
      let prev = dummyHead;
      while (prev.next.val <= cur.val) {
        prev = prev.next;
      }
      lastSorted.next = cur.next;
      cur.next = prev.next;
      prev.next = cur;
    }
    cur = lastSorted.next;
  }
  return dummyHead.next;
};

相关文章

  • 147. Insertion Sort List

    题目147. Insertion Sort List Sort a linked list using inser...

  • 147. Insertion Sort List

    题目要求: Sort a linked list using insertion sort.利用插入排序对一个链表...

  • 147. Insertion Sort List

    插入结点 但是 超时了。。 嗯 很蠢的做法 不超时的做法:

  • 147. Insertion Sort List

    思路 插入排序的思想,将未排序的与已知排好序的作比较,进行插入 创建一个链表来作为已知链表(rptr), 比较的是...

  • 147. Insertion Sort List

    题目 Sort a linked list using insertion sort. 思路 这道题花费了最多的时...

  • 147. Insertion Sort List

    Sort a linked list using insertion sort.使用插入排序法排链表。

  • 147. Insertion Sort List

    Sort a linked list using insertion sort.

  • 147. insertion sort list

    Sort a linked list using insertion sort. 这题是用插入排序排序一个链表。插...

  • 147. Insertion Sort List

    对链表进行插入排序。 插入排序的基本思想是,维护一个有序序列,初始时有序序列只有一个元素,每次将一个新的元素插入到...

  • 2018-11-10

    147.Insertion Sort List Sort a linked list using insertio...

网友评论

      本文标题:147. Insertion Sort List

      本文链接:https://www.haomeiwen.com/subject/zjuinltx.html