Java 选择排序字符串
我读了一份关于城市及其人口的文件,我试图用选择排序法按字母顺序对城市进行排序。 问题是,出于某种原因,它以一种奇怪的方式对其进行排序。“排序”列表的顺序是“abdchefhg…”我试着跟随它,但我不明白它在哪里出错。代码如下:Java 选择排序字符串,java,string,sorting,selection-sort,Java,String,Sorting,Selection Sort,我读了一份关于城市及其人口的文件,我试图用选择排序法按字母顺序对城市进行排序。 问题是,出于某种原因,它以一种奇怪的方式对其进行排序。“排序”列表的顺序是“abdchefhg…”我试着跟随它,但我不明白它在哪里出错。代码如下: //Selection for (int i = 0; i < cities.size() - 1; i++) { int minPos = i; for (int j = i + 1; j < cit
//Selection
for (int i = 0; i < cities.size() - 1; i++)
{
int minPos = i;
for (int j = i + 1; j < cities.size(); j++)
{
if (cities.get(j).compareToIgnoreCase(cities.get(minPos)) < -1)
minPos = j;
}
swap(cities, minPos, i);
}
System.out.print("\nSelection: ");
for(int i = 0; i < cities.size(); i++)
System.out.print(cities.get(i) +"|");
private static void swap(ArrayList <String> a, int i, int j)
{
String temp = a.get(i);
a.set(i, a.get(j));
a.set(j, temp);
}
//选择
对于(int i=0;i
知道怎么了吗
谢谢正如其他人所提到的,您的问题几乎肯定是您的
。<-1
比较,这在比较法中基本上没有意义。如中所述,Java中的比较通常通过返回
负整数、零或正整数,因为此对象小于、等于或大于指定对象
遵循同样的规则:
这些契约故意不说明这些负数或正数可能是什么,因此实现可以做任何最简单的事情。许多实现将显式返回-1
、0
或1
,但其他实现,包括字符串中的实现,使用减法作为快捷方式,返回所比较项目之间的差异,例如x.compareTo(y)
不返回x-y
。如果x
和y
相同,则结果为0
,否则如果x
较小,则返回负数;如果x
较大,则返回正数
简而言之,您必须始终使用
0
作为比较点。您是否尝试过使用…<0而不是。<-1
?为什么要使用Yep,这就是问题所在。这是我第一次使用字符串比较,所以我对它有点陌生。非常感谢。欢迎光临。我建议您阅读javadoc中的compareTo方法,这样您就可以完全理解发生了什么。
Returns:
a negative integer, zero, or a positive integer as the specified
String is greater than, equal to, or less than this String, ignoring
case considerations.