快速排序会栈溢出吗?
下面这段快速排序代码(java写的),在排序过程中会调用方法本身,如果这样的话,那数据量特别大的时候就需要很深层次的调用,那会发生栈溢出吗?
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); } }