문제는 네바다 재귀입니다. 나도 모르겠다. 재귀를 어떻게 끝낼 수 있을까? 재밌지 만, arraylist (mergedArray)를 출력하면, 반복 후에 정렬되지만 함수는 결코 멈추지 않습니다. 오류 메시지가 : "javaapplication9.QuickSort.simple_quick_sort (QuickSort.java:40)에서"Java 빠른 정렬을 어떻게 수정합니까?
아래 코드 : 물론
public ArrayList<Integer> simple_quick_sort(ArrayList<Integer> arr) {
ArrayList<Integer> mergedArray = new ArrayList<Integer>();
ArrayList<Integer> left = new ArrayList<Integer>();
ArrayList<Integer> right = new ArrayList<Integer>();
if (arr.size() <= 1) {
return arr;
}
else {
int pivot = arr.get(0);
for (int i = 0; i < arr.size(); i++) {
if (arr.get(i) < pivot) {
left.add(arr.get(i));
}
else {
right.add(arr.get(i));
}
}
}
mergedArray.addAll(left);
mergedArray.addAll(right);
simple_quick_sort(mergedArray);
return mergedArray;
}
'left'와'right' 섹션을 정렬하고 병합 된 전체 배열이 아니라 병합해야합니다. – laune
simple_quick_sort (mergedArray)가 무엇이든 상관없이 호출되므로 항상 루프가됩니다. – DHall
피벗은 미결 상태 여야하며 후속 정렬에 참여하지 않아야합니다. 먼저 퀵 소트를 이해해야합니다. – HuStmpHrrr