Простой алгоритм быстрой сортировки, дающий ошибку переполнения стека?

У моего друга есть небольшая проблема, и я в конце своих знаний. Он написал простой (он получил его в школе) алгоритм быстрой сортировки, и он выдает ошибку StackOverflow. Я знаю, что это означает, что он называет себя рекурсивным слишком много раз где-то, но я не могу получить логическую ошибку - пожалуйста, помогите мне!

Вот код (я опускаю некоторый код, поскольку он предназначен только для отображения его в 2 текстовых областях):

int array [] = new int [10];
...
 public static void quicksort (int array[],int l,int r){
int i = l;
int j = r;
int mitte = array [(l+r)/2];

while (i<j) {
  while  (array[i]<mitte) {
    i++;
  } // end of if
  while  (mitte<array[i]) {
    j--;
  } // end of if
  if (i<=j) {
    int merke =array[i];
    array[i] = array [j];
    array [j] = merke ;
    i++;
    j--;
  } // end of if
  if (i<j) {
    quicksort(array,l,j);
  } // end of if
  if (l<r) {
    quicksort(array,l,r);
  } // end of if
} // end of while
}

Это называется так:

 quicksort(array,0,9);

Но, если мы называем это, и эти 2 числа одинаковы, это не дает переполнения.

Если требуется больше кода, вот полный код на pastebin:http://pastebin.com/cwvbwXEu

Ответы на вопрос(3)

Ваш ответ на вопрос