raga ho un eccezione "Exception in thread "main" java.lang.StackOverflowError" nell'esecuzione di questo programma..Credo sia dovuto al fatto ke l'array su cui ordina va da 10000 a 10000000 di elementi e non alla ricorsione infinita..potreste darmi una mano?

codice:
void q_sort(int a[], int left, int right)
	{
	  int pivot, l_hold, r_hold;

	  l_hold = left;
	  r_hold = right;
	  pivot = a[left];
	  while (left < right)
	  {
	    while ((a[right] >= pivot) && (left < right))
	      right--;
	    if (left != right)
	    {
	      a[left] = a[right];
	      left++;
	    }
	    while ((a[left] <= pivot) && (left < right))
	      left++;
	    if (left != right)
	    {
	      a[right] = a[left];
	      right--;
	    }
	  }
	  a[left] = pivot;
	  pivot = left;
	  left = l_hold;
	  right = r_hold;
	  if (left < pivot)
	    q_sort(a, left, pivot-1);
	  if (right > pivot)
	    q_sort(a, pivot+1, right);
	}
in alternativa potreste darmi un algoritmo funzionante? :P