编程语言
首页 > 编程语言> > 快速排序实现 (Java)

快速排序实现 (Java)

作者:互联网

快速排序实现


public void quickSort(int []nums, int left, int right){
    if(left < right){
        int i = partition(nums, left, right) ; // 确定支点位置
        quickSort(nums, left, i - 1);
        quickSort(nums, i + 1, right);
    }
}

private int partition(int[] nums, int start, int end){
    int random = new Random().nextInt(end - start + 1) + start;
    int p1 = start - 1; // 小于random位置整数的前一个位置
    int p2 = start;     // 当前判断的位置

    swap(nums, random, end);    // 将支点交换到最后一个位置
    while(p2 < end){
        if(nums[p2] < nums[end]){
            p1++;
            swap(nums,p1, p2);
        }
        p2++;
    }
    //将支点放到最后一个小于支点位置的后一个位置
    p1++;
    swap(nums, p1, end);
    return p1;
}

private void swap(int[] nums, int i, int j){
    if(i != j){
        int temp = nums[i];
        nums[i] = nums[j];
        nums[j] = temp;
    }
}

标签:p1,end,nums,int,start,支点,Java,排序,快速
来源: https://www.cnblogs.com/yefuyi/p/16322113.html