나는 작동하는 quicksort를 가지고 있으며, 또한 작동하는 선택 정렬 - 나는 array.length = 1
까지 quicksort로 무작위 int의 int[]
을 정렬하고 그 마지막 요소 호출 선택 정렬을 원합니다. 나는 array.length
을 검사하는 조건을 알아야하고, length = 1
을 반환하면 을 반환합니다. quickSort()
내의 재귀 호출에서 구조화하는 방법을 모르겠습니다. 여기 내 두 개의 정렬 방법은 다음과 같습니다이 퀵 정렬을 구성하여 특정 인덱스 값에서 퀵 정렬을 중지하고 선택 정렬을 시작하려면 어떻게해야합니까?
이것은 QuickSort :
public void quickSort(int array[], int start, int end) {
int i = start; // index val of left-to-right scan
int k = end; // index val of right-to-left scan
if (end - start >= 1){
PIVOT = array[start];
while (k > i){
while (array[i] <= PIVOT && i <= end && k > i)
i++;
while (array[k] > PIVOT && k >= start && k >= i)
k--;
if (k > i)
swap(array, i, k);
}
swap(array, start, k);
quickSort(array, start, k - 1);
System.out.println(k);
quickSort(array, k + 1, end);
}
return;
}
선택 정렬 : 이미 거의 그 일을하고
public void selectionSort(int[] nums) {
//nums[0] = array[0];
System.out.println(nums.length);
for (int i = 0; i < (nums.length - 1); i++) {
for (int j = i + 1; j < nums.length; j++) {
if (nums[i] > nums[j]) {
int temp = nums[i];
nums[i] = nums[j];
nums[j] = temp;
}
}
}
}
어디에서 임계 값을 언급합니까? 아니면 암시입니까? 내가보기 엔 배열 길이가 1 일 때입니다. 왜 분명히 잘못된 것입니까? 왜 단일 항목 배열을 정렬하고 정렬할까요? – Steven
@steven - quicksort의 재귀 호출에 너무 많은 오버 헤드가 있기 때문에 잘못은 아니지만 의견을 주셔서 감사합니다. – mcgraw
@ mcG73 스티븐 (Steven)의 지적에 따르면 하나의 요소로 된 배열을 정렬하는 것은 이미 정렬되어 있기 때문에 유용하지 않습니다. 임계 값은 1보다 큰 숫자 여야합니다. –