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