Я пытаюсь реализовать быструю сортировку с использованием Java. Функция разбиения делает то, что она должна делать. То есть, разделите массив вокруг точки поворота (я выбрал элемент как ось поворота) , Но конечный результат не в отсортированном порядке. Я не могу понять ошибку. Может кто-то помочь?Быстрая сортировка в Java-неправильном выходе
public class Quick_sort {
public static int arr[] = {11, 2, 7, 1, 5, 4, 12, 65, 23};
public static int temp = 0;
public static void main(String args[]) {
int p=0;
int r=arr.length;
quick_sort(p,r);
for(int i: arr)
System.out.println(i);
}
public static int partition(int p, int r) {
if(p < r) {
int pivot=arr[p];
int i=1;
for(int j=1;j<r;j++) {
if(arr[j]<pivot) {
temp=arr[j];
arr[j]=arr[i];
arr[i]=temp;
i++;
}
}
temp=arr[i-1];
arr[i-1]=arr[p];
arr[p]=temp;
for(int m=0;m<r;m++) {
if(arr[m]==pivot) {
temp=m;
}
}
}
return temp;
}
public static void quick_sort(int p,int r) {
if(p>=r) return;
int index=partition(p,r);
quick_sort(p,index-1);
quick_sort(index+1,r-1);
}
}
Пожалуйста, отсканируйте свой код правильно, если вы попросите людей попробовать и прочитать его. – khelwood
http://java2novice.com/java-sorting-algorithms/quick-sort/, http://java67.blogspot.in/2014/07/quicksort-algorithm-in-java-in-place-example.html, http://examples.javacodegeeks.com/core-java/quicksort-algorithm-in-java-code-example/ Пройдите эту ссылку. –
Ваш код не был отступом, и вы не указали, где именно вы столкнулись с проблемой. –