Пример #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);
        }
Пример #2
0
        public void SelecctionSort(int[] value, int count)
        {
            int i, j = 0;
            int min, temp = 0;

            for (i = 0; i < count - 1; i++) //2개 2개씩 비교하기 위해서
            {
                min = i;                    //min에는 앞번째 순서의 자료가 들어가게 한다
                for (j = i + 1; j < count; j++)
                {
                    if (value[j] < value[min]) //value[min] 은 비교할 모 대상임. value[j]<- 순서대로 체크하면서 작으면 위치를 바꿔버린다.
                    {
                        min = j;               //배열의 위치를 값에 영향을 주지 않으면서 바꿈.
                    }
                }
                temp       = value[i];   //temp에 일단 무조건 첫번째의 값을 넣어준다.
                value[i]   = value[min]; //value[i]는 j보다 작은 값임. 그래서 작은 값을 넣어줌.
                value[min] = temp;       //작다고 비교되던 그 위치의 값과 교환.

                Console.WriteLine("Step - {0} ,", i + 1);
                Print_Array.PrintArray(value, count);
            }
        }