На первый взгляд кажется, что вы используете индексы как способ указания пределов подмассива
public static int partition(int input[] ,int startIndex , int endIndex)
Но затем вы всегда выполняете итерацию всего массива (условие i < input.length
) для:
for(int i = 1+startIndex ; i < input.length ; i++){
if(input[i] < pivot){
count++;
}
...
Таким образом, в ваших последующих итерациях вы по-прежнему просматриваете весь массив:
Итак, в этом вызове:
quickSort(input,startIndex , pivot-1);
pivot -1
игнорируется, как вы go - input.length
в любом случае, вызывая условие защиты:
if (startIndex >= endIndex )
никогда не оценивать как истинное, следовательно, работает вечно.
Попробуйте изменить значение для l oop на (не пробовал сам, просто взглянув на код):
for(int i = 1+startIndex ; i < endIndex ; i++){
И посмотрите, работает ли это.
Надеюсь, это поможет.