Java字符串插入排序未按预期工作
我的目标是创建一个工作插入排序,它可以使用main方法中提供给我们的数组来处理字符串和整数。对于这个例子,我称之为列表Java字符串插入排序未按预期工作,java,insertion-sort,Java,Insertion Sort,我的目标是创建一个工作插入排序,它可以使用main方法中提供给我们的数组来处理字符串和整数。对于这个例子,我称之为列表 public class insort{ public static void main(String[]list){ sort(list); printsort(list); }//main public static void sort(String[]list){ for (int index = 1; index < list.length; in
public class insort{
public static void main(String[]list){
sort(list);
printsort(list);
}//main
public static void sort(String[]list){
for (int index = 1; index < list.length; index++){
int key = list[index];
int position = index;
while (position > 0 && key.compareTo(list[position-1]) < 0){
list[position] = list[position-1];
position--;
}//while
list[position] = key;
}//for
}//sort
public static void printsort(String[]list){
while ( i < list.length){
System.out.print(i);
}//while
}//printsort
}//insort
insort中的公共类{
公共静态void main(字符串[]列表){
排序(列表);
打印排序(列表);
}//主要
公共静态无效排序(字符串[]列表){
for(int index=1;index0&&key.compareTo(列表[position-1])<0){
列表[位置]=列表[位置-1];
位置--;
}//当
列表[位置]=键;
}//为了
}//分类
公共静态void打印排序(字符串[]列表){
while(i
你混合了一些东西。对int
或Integer
对象进行排序要比对String
对象(尤其是需要确保String[]list
仅包含数字)进行排序容易得多,但是如果要对字符串对象进行排序,则需要更改以下几项:
字符串的引用
对象分配给基元变量
int
:
int key = list[index];
int key = list[index];
(key.compareTo(list[position-1])) < 0
例如,您可以将其更改为:
int key = Integer.valueOf(list[index]);
或者将列表从String[]
更改为int[]
int
使用compareTo()
方法:
int key = list[index];
int key = list[index];
(key.compareTo(list[position-1])) < 0
或者,如果您想继续使用int
变量,请尝试使用:
key < list[position-1]
尝试:
key < list[position-1]
for(String element : list){
System.out.println(element);
}
要打印列表的每个元素
main
方法从main(String[]args)
更改为main(String[]list)
,并尝试对String[]list
使用排序。您应该创建新的String[]
数组,并尝试使用它,例如:
String[] list = {"4","6","1","8"};
sort(list);
成功编译需要注意的一些事项:
inti=0
的操作i++
i
,该变量将打印从0到长度-1的数字,而不是列表数组中的字符串。因此,您需要类似于System.out.print(list[i])
的东西int key=list[index]
,RHS将返回字符串对象,而不是您在LHS上的int<代码>所以字符串key=list[index]就是您需要的祝您一切顺利:)您有什么问题吗?您的代码输出是什么?@eis嗨,很遗憾,我无法编译代码,因为我正在将字符串与整数进行比较。我不确定如何继续。
int key=list[index]代码>//这将返回一个字符串。不是int。编译器将显示错误。可能是@ThanigaiArasu的副本。我感谢您的评论和链接。非常感谢!我真的很感激,谢谢。这有助于我更好地理解排序。