Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 快速排序。处理副本_Java_Sorting_Duplicates_Quicksort - Fatal编程技术网

Java 快速排序。处理副本

Java 快速排序。处理副本,java,sorting,duplicates,quicksort,Java,Sorting,Duplicates,Quicksort,有人能告诉我如何使用我的函数在快速排序中处理重复项吗 private static int[] quickSort(int[] input, int left, int right) { int mid = (left + right) / 2; int i = left; int j = right; if((right - left) < 1) { return new int[]{}; } while(i <=

有人能告诉我如何使用我的函数在快速排序中处理重复项吗

private static int[] quickSort(int[] input, int left, int right) {
    int mid = (left + right) / 2;
    int i = left;
    int j = right;

    if((right - left) < 1) {
        return new int[]{};
    }

    while(i <= j) {
        while((input[i] < input[mid])) {
            i++;
        }

        while((input[j] > input[mid])) {
            j--;
        }

        if(i <= j) {
            int temp = input[i];
            input[i] = input[j];
            input[j] = temp;
            i++;
            j--;
        }
    }

    if(j > left) {
        input = quickSort(input, left, j);
    }

    if(i < right) {
        input = quickSort(input, i, right);
    }
    return input;
}
私有静态int[]快速排序(int[]输入,int左,int右){
int mid=(左+右)/2;
int i=左;
int j=右;
如果((右-左)<1){
返回新的int[]{};
}
而(我输入[mid])){
j--;
}
如果(我离开){
输入=快速排序(输入,左,j);
}
如果(我<对){
输入=快速排序(输入,i,右);
}
返回输入;
}

该代码有几个问题

  • “returnnewint[]{};”这将生成新数组并不必要地消耗内存。您可以返回“输入”

  • 对于第一个内部循环,您可能需要“输入[i]您能给出一个简单的示例,说明您的代码在哪里不处理重复项以及您希望它做什么吗?例如,如果我尝试对
    1,1,0,3
    进行排序,它会抛出此异常。成功了!谢谢~