我正在尝试为字符串数组实现快速排序,但似乎它将数组按相反的顺序排序,我想知道为什么会这样,以及如何解决这个问题以正常排序...这是我的实现代码:
public class Main {
public static void main(String[] args) {
String[] list = {"a", "f", "c", "b"};
quickSort(list, 0, list.length - 1);
for (String s : list) {
System.out.println(s);
}
}
private static void quickSort(String[] list, int start, int end) {
if (start < end) {
int pIndex = partition(list, start, end);
quickSort(list, start, pIndex - 1);
quickSort(list, pIndex + 1, end);
}
}
private static int partition(String[] list, int start, int end) {
String pivot = list[end];
int leftCounter = start;
int rightCounter = end;
while (leftCounter < rightCounter) {
while (list[leftCounter].compareTo(pivot) <= 0 && leftCounter < end && rightCounter > leftCounter) {
leftCounter++;
}
while (list[rightCounter].compareTo(pivot) >= 0 && rightCounter > start && rightCounter >= leftCounter) {
rightCounter--;
}
if (leftCounter < rightCounter) {
swap(list, leftCounter, rightCounter);
}
}
swap(list, start, end);
return end;
}
private static void swap(String[] list, int start, int end) {
String aux = list[start];
list[start] = list[end];
list[end] = aux;
}
}
leftCounter < rightCounter
返回的索引分别为0
和2
,它也会返回true
。 - CodeMouse92