我遇到一个问题,我需要按字母顺序对String数组进行排序。我能够对一个数组进行排序,但是当有另外两个数组对应于第一个数组时,问题就开始了。每个数组中的每个值都应该在同一个地方,以使信息不会混乱。排序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;
}
}
}
答案 0 :(得分:1)
如果您希望根据您在国家/地区数组中所做的比较来交换所有数组。您可以在一次比较后交换多个数组。
If(array1[i] > array1[i+1]){
Swap(array1[i],array1[i+1)
Swap(array2[i],array2[i+1])
}
通过使用交换功能,您可以更轻松地在更多阵列中进行交换。
答案 1 :(得分:1)
到目前为止,最推荐的方法是重新设计您的程序,并将所有相关项目排列在一个类中。毕竟,这就是对象的用途。然后,您可以创建对象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语言约定 - 变量名称不应以大写字母开头,只应以类型名称开头。
答案 2 :(得分:0)
您必须同时交换Country
和City
数组中的元素。
public class BubbleSortTmp {
public String[] Country = {"z", "h", "a"};
public int[] City = {3, 2, 1};
public void printCountry() {
for (String s : Country) {
System.out.printf("%s ", s);
}
System.out.println();
}
public void printCity() {
for (int s : City) {
System.out.printf("%s ", s);
}
System.out.println();
}
public void sort() {
for (int outer = Country.length - 1; outer > 0; outer--) {
for (int inner = 0; inner < outer; inner++) {
if (Country[inner].compareTo(Country[inner+1]) > 0) {
swapCountry(inner, inner+1);
swapCity(inner, inner+1);
}
}
}
}
private void swapCountry(int first, int second) {
String tmp = Country[first];
Country[first] = Country[second];
Country[second] = tmp;
}
private void swapCity(int first, int second) {
int tmp = City[first];
City[first] = City[second];
City[second] = tmp;
}
public static void main(String[] args) {
BubbleSortTmp bs = new BubbleSortTmp();
System.out.println("Before: ");
bs.printCountry();
bs.printCity();
bs.sort();
System.out.println("After: ");
bs.printCountry();
bs.printCity();
}
}