关于快速排序是将序列分拆成大于一个数和小于等于一个数的数组。我现在的问题是如果数组输入是20 、10 ,这样就会一直在排 quickSort(arr, 0, 1)
不知道是不是我的理解有问题,大虾们指教一下 private static void quickSort(int[] sortarray, int left, int right) {
System.out.println("quickSort sorting " + high++ + "left:" + left +"right:"+right);
int i = left;
int j = right;
int point = sortarray[left];
while (i < j){
while (j > i && sortarray[j] > point)
j--;
while (i <= j && sortarray[i] <= point)
i++;
//System.out.println("Start sorting at :" + new Date());
if (i < j){
int temp = sortarray[j];
sortarray[j] = sortarray[i];
sortarray[i] = temp;
j--;i++;
}
}
if (j > left){
quickSort(sortarray, left, j);
}
if (i < right){
quickSort(sortarray, i, right);
}
}
不知道是不是我的理解有问题,大虾们指教一下 private static void quickSort(int[] sortarray, int left, int right) {
System.out.println("quickSort sorting " + high++ + "left:" + left +"right:"+right);
int i = left;
int j = right;
int point = sortarray[left];
while (i < j){
while (j > i && sortarray[j] > point)
j--;
while (i <= j && sortarray[i] <= point)
i++;
//System.out.println("Start sorting at :" + new Date());
if (i < j){
int temp = sortarray[j];
sortarray[j] = sortarray[i];
sortarray[i] = temp;
j--;i++;
}
}
if (j > left){
quickSort(sortarray, left, j);
}
if (i < right){
quickSort(sortarray, i, right);
}
}
目标数组遍历一遍,排序就结束了。