我的Java快速排序实现有什么问题?

0 java sorting algorithm quicksort

我很确定我理解quicksort是如何工作的,但我找不到导致我尝试实现它的错误.我已经仔细研究了几个小时,无法弄清楚出了什么问题.请帮我!这是整个文件(它只是快速排序 - 没有什么额外的.数组只是用于测试快速排序的随机数字.)

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; 
     }
}
Run Code Online (Sandbox Code Playgroud)

就像现在一样,循环永远不会终止......这是一个永远的无限循环!请帮我弄清楚什么是错的.

Mic*_*rdt 5

帮自己一个忙,学习如何使用调试器.它使解决这类问题变得非常容易.

  • StackOverflow是最用户友好,最易于使用,无学习曲线的调试器...... (3认同)