我目前正在尝试按照人口的字母顺序对一组国家/地区进行排序,但是在对它进行排序时遇到了问题,因为从末尾开始的一个国家/地区位于该阵列的开头,使排序变得混乱。除此之外,它还可以。可以说该数组具有以下值=“阿富汗”,“巴西”,“波斯尼亚和黑塞哥维那”,“赞比亚”,“土耳其”。

这是我的排序代码:

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/

10-12 18:36