私のコードでは、メソッドはそれ自体を呼び出します (再帰)。深いメソッド呼び出しがスタック オーバーフローにつながることはわかっています。では、大量のデータがある場合、スタック オーバーフローは発生しますか?
私のQuickSortコード:(ソートクラスの内部クラス)
private static class QuickSortor extends Sortor {
protected <E> void sort(E[] a, boolean isAsc) {
quickSort(a, 0, a.length - 1, isAsc);
}
private <E> void quickSort(E[] a, int left, int right, boolean isAsc) {
if (left >= right)
return;
int middle = left;
Comparable<E> cmp = (Comparable<E>) a[left];
for (int i = left + 1; i <= right; i++) {
int result = cmp.compareTo(a[i]);
if (!isAsc)
result = -result;
if (result >= 0)
swap(a, ++middle, i);
}
swap(a, left, middle);
quickSort(a, left, middle - 1, isAsc);
quickSort(a, middle + 1, right, isAsc);
}
}