147. Insertion Sort List
Posted 鱼与海洋
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了147. Insertion Sort List相关的知识,希望对你有一定的参考价值。
Sort a linked list using insertion sort.
复杂度 o(n^2);
插入排序 (Insertion Sort)
设有一组关键字{K1, K2,…, Kn};排序开始就认为 K1 是一个有序序列;让 K2 插入上述表长为 1 的有序序列,使之成为一个表长为 2 的有序序列;然后让 K3 插入上述表长为 2 的有序序列,使之成为一个表长为 3 的有序序列;依次类推,最后让 Kn 插入上述表长为 n-1 的有序序列,得一个表长为 n 的有序序列。
具体算法描述如下:
- 从第一个元素开始,该元素可以认为已经被排序
- 取出下一个元素,在已经排序的元素序列中从后向前扫描
- 如果该元素(已排序)大于新元素,将该元素移到下一位置
- 重复步骤 3,直到找到已排序的元素小于或者等于新元素的位置
- 将新元素插入到该位置后
- 重复步骤 2~5
/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { val = x; } * } */ public class Solution { public ListNode insertionSortList(ListNode head) { if(head == null || head.next == null) return head; ListNode dummy = new ListNode(0); ListNode pre = dummy; ListNode cur = head; while(cur != null){ ListNode next = cur.next; while( pre.next != null && pre.next.val < cur.val){ pre = pre.next; } //insert cur nodein pre and pre.next; cur.next = pre.next; pre.next = cur; pre = dummy; cur = next; } return dummy.next; } }
以上是关于147. Insertion Sort List的主要内容,如果未能解决你的问题,请参考以下文章
#Leetcode# 147. Insertion Sort List