带有2个不同阵列的冒泡排序

时间:2016-11-13 19:15:27

标签: java sorting bubble-sort

使用

string[] z = { "arc", "banana", "cucumber", "deer", "elephant", "fiesta", "giga", "home", "idea", "jump" };
int[] y = { 189, 178, 65, 63, 200, 1000, 10, 15, 28, 20 };

我按z命令y排序:

for (int i=0;i<=(y.length-2);i++){
                for (int j=(y.length-1); i<j;j--){
                    if (y[j]<y[j-1]){
                        int temp= y[j-1];
                        y[j-1]=y[j];
                        y[j]=temp;
                        String tempo=z[j-1];
                        z[j-1]=z[j];
                        tempo=z[j];
                    }
                }
            } 
 for (int i=y.length-1;i>0;i--){
 System.out.println(z[i]);}

打印后,z的输出为:

  

跳,跳,跳,想法,想法,想法,想法,家,家,家

为什么排序会删除z的某些值?

1 个答案:

答案 0 :(得分:0)

您没有将字符串数组用于临时变量。使用您的代码,您可以在z[j-1]中保存tempo的内容,但不会将其写回数组:

而不是

String tempo=z[j-1];
z[j-1]=z[j];
tempo=z[j];

试试这个:

String tempo = z[j - 1];
z[j - 1] = z[j];
z[j] = tempo;

在你的输出循环中,你有一个off by one error。使用>=0

for (int i=y.length-1;i>=0;i--)