根据数组中字符串的长度进行java快速排序
我从用户那里扫描了字符串。下一步是按文本长度对数组进行排序,我不知道我做错了什么,有时它会起作用
public static void quickSort(String[] subtitles, int start, int end) {
int i = start;
int j = end;
if (j - i >= 1) {
String pivot = subtitles[i];
while (j > 1) {
while (subtitles[i].compareTo(pivot) <= 0 && i < end && j > i)
i++;
while (subtitles[j].compareTo(pivot) >= 0 && j > start && j >= i)
j--;
if (j > i)
swap(subtitles, i, j);
}
swap(subtitles, start, j);
quickSort(subtitles, start, j - 1);
quickSort(subtitles, j + 1, end);
} else
return;
}
public static void swap(String[] a, int i, int j) {
String tmp = a[i];
a[i] = a[j];
a[j] = tmp;
}
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int amountStrings = 3;
String[] subtitles = new String[amountStrings];
System.out.println("insert ");
for (int i = 0; i < amountStrings; i++) {
subtitles[i] = scan.next();
}
System.out.println("--------");
quickSort(subtitles, 0, subtitles.length - 1);
for (int i = 0; i < subtitles.length; i++) {
System.out.print(subtitles[i] + " ");
}
不正确:
在: asdzxc asd zxc
出: asd asdzxc zxc
正确:
在: 自卫队 出:
s sdf sdfsfwer
# 1 楼答案
好的,我检查了你的代码,并提出了两个新方法。一个按字母顺序对数组进行排序,另一个按数组中每个单词的字母数进行排序。什么方法适合你取决于你。 测试和工作