I'm doing a benchmark for different sorting and I'm getting a StackOverflowError using Quicksort for an array of size 100,000.
private static int partition(int a[], int start, int end) {
int pivot = a[end];
int i = (start - 1);
for (int j = start; j <= end - 1; j++) {
if (a[j] < pivot) {
i++;
int t = a[i];
a[i] = a[j];
a[j] = t;
}
}
int t = a[i + 1];
a[i + 1] = a[end];
a[end] = t;
return (i + 1);
}
//Quick Sort
public static long quickSort(int a[], int start, int end) {
long comeco = System.currentTimeMillis();
if (start < end) {
int p = partition(a, start, end);
quickSort(a, start, p - 1); <<< ------------- Here s where I got the error
quickSort(a, p + 1, end);
}
long tempo = System.currentTimeMillis() - comeco;
return tempo;
}
I will also need to use Quicksort to sort an array of size 1,000,000 so I will get this problem again.
I read about increasing the stack size but didn't figure out how to do it properly.