Простой алгоритм быстрой сортировки, дающий ошибку переполнения стека?
У моего друга есть небольшая проблема, и я в конце своих знаний. Он написал простой (он получил его в школе) алгоритм быстрой сортировки, и он выдает ошибку 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