java如何来交换两个数组元素的值?

public class BubbleSort{
public static void main (Stringargs[ ]){
int i,j;
int intArray[ ] ={30,1,-9,70,25};
int l=intArray .length;
for(i=1;i<l;i++)
for(j=0;j<l-i-1;j+ +)
if(intArray[j]>intArray[j+1]){
int t =intArray[i];
intArray[j]=intArray[j+1];
intArray[j+1]=t;
}
for(i=0;i<1;i++)
System.out.println(intArray[i]+″″);
}
}

这个冒泡排序可以运行但是结果不对,哪里错了啊?

首先两个数组的长度要一样交换才有意义,循环遍历数组
int temp; //数组是什么类型temp就定义什么类型
for(int i=0; i<ary1.length; i++){
temp = ary1[i];

ary1[i] = ary2[i];
ary2[i] = temp;
}追问

public class BubbleSort{
public static void main (Stringargs[ ]){
int i,j;
int intArray[ ] ={30,1,-9,70,25};
int l=intArray .length;
for(i=1;iintArray[j+1]){
int t =intArray[i];
intArray[j]=intArray[j+1];
intArray[j+1]=t;
}
for(i=0;i<1;i++)
System.out.println(intArray[i]+″″);
}
}
这个冒泡排序可以运行但是结果不对,哪里错了啊?

追答

第六行应该是 for(i=0;i<l-1;i++)
第六行应该是 int t =intArray[j];

追问

为什么要用双重循环?

追答

i代表次数
j代表比较位置
intArray i j j+1 ary[j] ary[j+1] [j]>[j+1] [j][j+1]
{8,2,3,7,1} 0 0 1 8 2 true 82
{2,8,3,7,1} 0 1 2 8 3 true 83
{2,3,8,7,1} 0 2 3 8 7 true 87
{2,3,7,8,1} 0 3 4 8 1 true 81
{2,3,7,1|8} 1 0 1 2 3 false
{2,3,7,1|8} 1 1 2 3 7 false
{2,3,7,1|8} 1 2 3 7 1 true 71
{2,3,1|7,8} 2 0 1 2 3 false
{2,3,1|7,8} 2 1 2 3 1 true 31
{2,1|3,7,8} 3 0 1 2 1 true 21
{1,2,3,7,8}
i = 0~ [j+1]){
[j][j+1]
}
看看这个应该会明白了

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-05-10
int [] a ={1,2,3};
int [] b ={4,5,6};
int [] c = new int[];
for(int i=0;i<3;i++){
c[i]=a[i];
a[i]=b[i];
b[i]=c[i];
}追问

public class BubbleSort{
public static void main (Stringargs[ ]){
int i,j;
int intArray[ ] ={30,1,-9,70,25};
int l=intArray .length;
for(i=1;iintArray[j+1]){
int t =intArray[i];
intArray[j]=intArray[j+1];
intArray[j+1]=t;
}
for(i=0;i<1;i++)
System.out.println(intArray[i]+″″);
}
}

这个冒泡排序可以运行但是结果不对,哪里错了啊?

追答

第一,让外边的循环i从0开始
第二,int i= intArray【j】 而不是i

追问

为什么要用双重循环?

第2个回答  2013-05-10
public static void main(String[] args) {
int [] a={1,2,3};
int [] b={4,5,6};

int [] c=a.clone();

a=b.clone();
b=c.clone();