Ejemplo n.º 1
0
        int PartitionQuickSort(int[] value, int start, int end)
        {
            int pivot = end;
            int right = end;
            int left  = start;
            int temp  = 0;

            while (left < right)
            {
                while (value[left] < value[pivot] && (left < right))
                {
                    left++;
                }
                while (value[right] >= value[pivot] && (left < right))
                {
                    right--;
                }

                if (left < right)
                {
                    Console.WriteLine("정렬 범위: {0}~{1}, 피봇-[{2}], Left({3})-Right({4}) 교환전,", start, end, value[pivot], value[left], value[right]);
                    Print_Array.PrintQuickSortArray(value, start, end);

                    temp         = value[left];
                    value[left]  = value[right];
                    value[right] = temp;

                    Console.WriteLine("정렬 범위 : {0}~{1}, 피봇-({3}), 교환 후,", start, end, value[pivot]);
                    Print_Array.PrintQuickSortArray(value, start, end);
                }
            }

            Console.WriteLine("정렬 범위 : {0}~{1}, 피봇-({3}), 교환 전,", start, end, value[right]);
            Print_Array.PrintQuickSortArray(value, start, end);

            temp         = value[pivot];
            value[pivot] = value[right];
            value[right] = temp;

            Console.WriteLine("정렬 범위 : {0}~{1}, 피봇 교환 gn,", start, end);
            Print_Array.PrintQuickSortArray(value, start, end);


            return(right);
        }