0
我尝试使用java中的快速排序算法以字典顺序对Strings
的数组进行排序。该阵列通过终端使用Scanner
读入并保存在ArrayList
中。这个ArrayList
后来被转换为一个数组,我试着在其上应用快速排序算法。 我有两种方法:字典快速排序
private static void sortA(String[] s, int start, int end) {
if (end > start) {
int pivot = partition(s, start, end);
sortA(s, start, pivot - 1);
sortA(s, pivot + 1, end);
}
}
private static int partition(String[] s, int start, int end) {
String pivot = s[end];
int left = start;
int right = end;
String temp = "";
do {
while ((s[left].compareTo(pivot) <= 0) && (left < end))
left++;
while ((s[right].compareTo(pivot) > 0) && (right > start))
right--;
if (left < right) {
temp = s[left];
s[left] = s[end];
s[right] = temp;
printRow(s);
}
} while (left < right);
temp = s[left];
s[left] = s[end];
s[end] = temp;
return left;
}
代码似乎随机做工精细,然后突然没有。例如,阵列{"java", "application", "system"}
可以很好地分类到{"application", "java", "system"}
。数组{"library", "content", "bin"}
排序为{"bin", "library", "contents"}
,这不是字典顺序。当然,电脑不会随机工作,所以我的代码一定有问题。我试图在纸上制定一个例子,但是我会发现一些完全错误的东西。但是,我基于快速排序实现了一个双数组排序实现,所以我不认为我犯了一个很大的推理错误。 在此先感谢。
谢谢!它现在看起来很有效。我犯了这样一个愚蠢的错误......我尽快接受答案! –