2015-11-19 3 views
1

Здравствуйте, я пытаюсь реализовать метод Quicksort в Java, но по какой-то причине я получаю ошибку переполнения стека, когда я делаю всего 5 элементов! Любые идеи, что может быть неправильным? Часть моего Кодекса:Переполнение стека, когда я реализую метод Quicksort

class QuickSort implements AbstractSort { 
    public int partition(int[] numbers, int start, int end) 
    { 
     int pivot = numbers[end]; 
     int theIndex = start; 
     int temp; 
     for(int i = start; i <= end - 1; i++) 
     { 
      if(numbers[i] <= pivot) 
      { 
       temp = numbers[theIndex]; 
       numbers[theIndex] = numbers[i]; 
       numbers[i] = temp; 
       theIndex++; 
      } 
     } 
     temp = numbers[theIndex]; 
     numbers[theIndex] = pivot; 
     numbers[end] = temp; 
     return theIndex; 
    } 

    public void mySort(int[] numbers, int start, int end) 
    { 
     if(start < end) 
     { 
      int myIndex = partition(numbers, start, end); 

      mySort(numbers, 0, myIndex-1); 
      mySort(numbers, myIndex + 1, numbers.length - 1); 
     } 
     else 
     { 
      return; 
     } 
    } 
    public void sort(int[] numbers) 
    { 
     mySort(numbers, 0, numbers.length - 1); 
    } 
} 
+0

вы можете предоставить некоторые примеры, которые ваши пытаются сортировать ? –

+0

Я использовал 9 0 8 5 6 ... Но я выяснил проблему! Я не должен пропускать 0 в моей рекурсии, но «начинаю». поэтому вместо mySort (числа, 0, myIndex-1); это должен быть mySort (числа, начало, myIndex-1); – AVC

ответ

1

Проблема заключалась в mySort(numbers, 0, myIndex-1); я должен положить начать вместо 0, поэтому правильный код выглядит следующим образом mySort(numbers, start, myIndex-1);

Смежные вопросы