【LeetCode-面接アルゴリズムクラシック-Java実装】【147-Insertion Sort List(チェーンテーブル挿入ソート)】


【147-Insertion Sort List(チェーンテーブル挿入ソート)】
【LeetCode-面接アルゴリズムクラシック-Java実装】【すべてのテーマディレクトリインデックス】
原題
  Sort a linked list using insertion sort.
テーマの大意
単一チェーンテーブルの挿入ソート
問題を解く構想.
ポインタpを使用して、順序付けされていないチェーンテーブルの最初のノードを指し、順序付けされた部分でq以上の最初の前駆ノードを見つけ、pに対応するノードを正しい位置に挿入し、pは順序付けされていないチェーンテーブルの最初のノードを再び指す.チェーンテーブルが並べ替えられるまで.
コード実装
ノードクラス

public class Solution {
    public ListNode insertionSortList(ListNode head) {

        ListNode root = new ListNode(0); //    
        root.next = head;
        ListNode p = head;
        ListNode q;
        ListNode r;

        while (p != null && p.next != null) {
            if (p.val <= p.next.val) {
                p = p.next;
            }else {
                q = p.next;
                p.next = q.next;

                r = root;
                //         q.val     ,   root.next p           
                while (r.next.val <= q.val) {
                    r = r.next;
                }

                q.next = r.next;
                r.next = q;
            }
        }

        return root.next;
    }
}

   , , , 。

, 【http://blog.csdn.net/derrantcm/article/details/47801745】