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); }
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); } }