&nbsp   quickSort.arr int[] { 100, 3, 7, 6, 2, 2, 4 };


    class QuickSort

    {

        public int[] arrData;

        

        public void ShowQuickS(Array name, int start, int end)

        {

            if(start < end)

            {

                int right = Partition(name, start, end);

                ShowQuickS(name, start, right - 1);

                ShowQuickS(name, right + 1, end);

            }                       

        }


        public int Partition(Array name, int start, int end)

        {

            int pivot = arrData[start];

            int left = start+1;

            int right = end;

            int temp;


            while(left < right)

            {

                while (arrData[left] < pivot && left < right)

                {

                    left++;

                }

                while (arrData[right] >= pivot && left <= right)

                {

                    right--;

                }

                if (left < right)

                {

                    temp = arrData[left];

                    arrData[left] = arrData[right];

                    arrData[right] = temp;

                }

            }

            if (arrData[start] >= arrData[right])

            {

                temp = arrData[start];

                arrData[start] = arrData[right];

                arrData[right] = temp;

            }

            return right;

        }

    }


저 굵은 글씨 빼고는 일반적인 퀵 정렬이야. 배열의 크기가 두 개인 경우 무조건 스왑 시키길래 안전장치 하나 만들어 놨는데 속도 차이가 심할까?

퀵 정렬이 원래 이렇게 예외가 심해? 머 좀 건드리면 배열 범위 초과하거나 무한루프 빠지네......