我目前正在尝试按照人口的字母顺序对一组国家/地区进行排序,但是在对它进行排序时遇到了问题,因为从末尾开始的一个国家/地区位于该阵列的开头,使排序变得混乱。除此之外,它还可以。可以说该数组具有以下值=“阿富汗”,“巴西”,“波斯尼亚和黑塞哥维那”,“赞比亚”,“土耳其”。
这是我的排序代码:
int i;
int j;
String temp;
for(i=0;i<length;i++){
for(j=1;j<length;j++){
if(countryList[i].compareToIgnoreCase(countryList[j])<0)
{
temp=countryList[i];
countryList[i]=countryList[j];
countryList[j]=temp;
}
} //
}
最佳答案
如前所述,问题是内部的for循环。 j
必须设置为i + 1
。
还有另一个问题:您的比较是错误的方法。这按字母升序排列:
for (i = 0; i < length; i++) {
for (j = i + 1; j < length; j++) {
if (countryList[i].compareToIgnoreCase(countryList[j]) > 0) { // >0 instead of <0
temp = countryList[i];
countryList[i] = countryList[j];
countryList[j] = temp;
}
}
}
但是由于插入排序相对较慢,因此建议您使用
Arrays.sort
。关于java - 在按字母顺序对数组排序时出现问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43058223/