Я почти уверен, что понимаю, как работает быстрая сортировка, но я не могу найти ошибку, из-за которой моя попытка реализовать ее не работает.Я просматривал это часами и не могу понять, что не так.Пожалуйста, помогите мне!Вот весь файл (это просто быстрая сортировка - ничего лишнего. Массив - это просто случайные числа для проверки быстрой сортировки.)
public class Quicksort{
public static void main(String args[]){
int[] arr = {5,1,4,3,7,0,9,2,6,8};
quicksort(arr, 0, arr.length-1);
for(int x : arr)
System.out.print(x+" ");
}
public static void quicksort(int[] arr, int start, int end){
if(end-start<2)
return;
int pivot = (end-start)/2;
int i = start;
int k = end;
while(k>i){
while(arr[i]<arr[pivot]&&k>i&&i<=end)
i++;
while(arr[k]>arr[pivot]&&k>=i)
k--;
if(k>i){
swap(arr, i, k);
}
}
swap(arr, pivot, i);
quicksort(arr, 0, i);
quicksort(arr, k, arr.length-1);
}
public static void swap(int[] a, int x, int y){
int temp = a[x];
a[x] = a[y];
a[y] = temp;
}
}
Как сейчас, цикл никогда не заканчивается ... это навсегдабесконечный цикл!Пожалуйста, помогите мне понять, что не так.