コード例 #1
0
        private static SinglyNode <int> InternalMergeSort(this SinglyNode <int> node)
        {
            if (node == null)
            {
                Throw.ArgumentNullException(nameof(node));
            }
            if (node.Next == null)
            {
                return(node);
            }

            var middle     = node.InternalMiddleNode();
            var secondHalf = middle.Next;

            middle.Next = null;

            var left  = InternalMergeSort(node);
            var right = InternalMergeSort(secondHalf);

            return(InternalMerge(left, right));
        }