Hello,

Can someone let me know why do I get 'stack overflow' error running this code? I suspect that my stop condition is wrong, although I cannot see why...since should return when only one element left inthe aray (recursive implementation).

Thank you all!

Code:#include <stdio.h> #include <stdlib.h> #include <time.h> #define LENGTH 6 //fwd decleration void quickSort(int*, int, int); int partition(int*, int, int); int main() { int i, a[LENGTH]; int left = 0, right = LENGTH-1; srand(time(0)); printf("before:\n"); for(i = 0; i < LENGTH; i++) { a[i] = rand()%40+1; printf("%d, ", a[i]); } printf("\n\n"); quickSort(a, left, right); //print sorted array printf("\nafter:\n"); for(i = 0; i < LENGTH; i++) printf("%d, ", a[i]); printf("\n\n"); system("pause"); return 0; } void quickSort(int a[], int left, int right) { int mid; //printf("left=%d\t right=%d\n", left, right); if(left == right) return; mid = partition(a, left, right); quickSort(a, left, mid-1); quickSort(a, mid+1, right); } int partition(int a[], int left, int right) { int p = a[right]; int i, j, temp; for(i = left, j = i-1; i < right; i++) { if(a[i] <= p) { j++; temp = a[i]; a[i] = a[j]; a[j] = temp; } }//place pivot temp = a[j+1]; a[j+1] = a[right]; a[right] = temp; return j+1; }