Java 在使用插入排序时,如何在末尾放置较大的单词?
我正在编写一些代码,将我的字符串按字母顺序组织起来,但我意识到,当一个单词比所有其他单词都大时,它会把它放在前面。我怎样才能把它放在单词列表的后面呢Java 在使用插入排序时,如何在末尾放置较大的单词?,java,arrays,insertion-sort,compareto,Java,Arrays,Insertion Sort,Compareto,我正在编写一些代码,将我的字符串按字母顺序组织起来,但我意识到,当一个单词比所有其他单词都大时,它会把它放在前面。我怎样才能把它放在单词列表的后面呢 public class SortingText { public static void main(String[] args) { int i,j; String key; String[] inputArray = {"Fourscore","
public class SortingText {
public static void main(String[] args) {
int i,j;
String key;
String[] inputArray = {"Fourscore","and","seven","years","ago","our"};
System.out.println(Arrays.toString(inputArray));
for (j = 1; j < inputArray.length; j++) { //the condition has changed
key = inputArray[j];
i = j - 1;
while (i >= 0) {
if (key.compareTo(inputArray[i]) > 0) {//here too
break;
}
inputArray[i + 1] = inputArray[i];
i--;
}
inputArray[i + 1] = key;
System.out.println(Arrays.toString(inputArray));
}
System.out.println(Arrays.toString(inputArray));
}
}
公共类排序文本{
公共静态void main(字符串[]args){
int i,j;
字符串键;
String[]inputArray={“八十”,“和”,“七”,“年”,“以前”,“我们的”};
System.out.println(Arrays.toString(inputArray));
对于(j=1;j=0){
如果(key.compareTo(inputArray[i])>0{//
打破
}
输入阵列[i+1]=输入阵列[i];
我--;
}
输入阵列[i+1]=键;
System.out.println(Arrays.toString(inputArray));
}
System.out.println(Arrays.toString(inputArray));
}
}
此时,您可以使用compareTo来比较这两个项目。让我们更新此以使用比较器:
// Sort by the natural order
Comparator<string> cmp = Comparator.naturalOrder();
...
if (cmp.compare(key, inputArray[i]) > 0) {//here too
Comparator cmp = String.CASE_INSENSITIVE_ORDER;
// Result = [ago, and, Fourscore, our, seven, years]
String.compareTo()
区分大小写,意思是A
比A
小。这就是为什么“Fourscore”
位于排序数组的开头
在比较元素时,可以使用compareToIgnoreCase()
而不是compareTo()
忽略大小写:
if(key.compareTignoreCase(inputArray[i])>0){
你的问题不是字长,而是你不区分大小写,也不区分大写和非大写字母。在你的逻辑中,大写字母是先排序的。试着将第一个单词改为“fourscore”,你会发现不管它的长度如何,它都不会在开头排序