我面临一个问题,我需要按字母顺序对字符串数组进行排序。我可以对一个数组进行排序,但是当有两个数组对应于第一个数组时,问题就开始了。每个数组中的每个值都应该位于相同的位置,以使信息不会困惑。对 array1
进行排序后,它按字母顺序排列,但我不知道如何使 array2
和 array3
中的值更改位置排序完成后与 array1
相同。
到目前为止我的代码是:
public void sort()
{
boolean finish = false;
while(finish == false){
finish = true;
for(int i=0;i<Country.length-1;i++)
{
int num = 0;
if(Country[i] != null && Country[i + 1] != null)
{
String name1=Country[i]; String name2=Country[i+1];
num=name1.compareTo(name2);
}
else if(Country[i] == null && Country[i + 1] == null){
num = 0;
}
else if(Country[i] == null){
num = 1;
}
else {
num = -1;
}
if(num>0)
{
String temp=Country[i];
Country[i]=Country[i+1];
Country[i+1]=temp;
finish=false;
}
}
}
最佳答案
到目前为止,最推荐的方法是重新设计您的程序,并将所有相关项目安排在一个类中。毕竟,这就是对象的用途。然后,您可以使该对象Comparable
,为其提供一个compareTo
方法,然后对其进行排序。
但是,如果您确实无法做到这一点,那么您应该做的是,每当您交换排序数组中的任意两个项目时,请确保交换其他数组中的相应项目。
因此,如果您有数组 country
、capital
和 headOfState
,则必须编写如下内容:
String temp=country[i];
country[i]=country[i+1];
country[i+1]=temp;
temp=capital[i];
capital[i]=capital[i+1];
capital[i+1]=temp;
temp=headOfState[i];
headOfState[i]=headOfState[i+1];
headOfState[i+1]=temp;
这样,每当您移动主数组中的任何内容时,您也将移动其他数组中的相应项目,因此它们将保持在一起。
但是,如果您重新设计程序,那就更受欢迎了。
另请注意 Java 语言约定 - 变量名称不应以大写字母开头,只有类型名称应以大写字母开头。
关于Java冒泡排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36849719/