public static void main(String[] args)
{ int[] array = {63,4,24,1,3,15};
int[] newarray = arrayBubbleSort_up(array);
showarray(array);
showarray(newarray);
} public static int[] arrayBubbleSort_up(int[] array) //冒泡排序法
{
for(int i=1;i<array.length;i++)
{
for(int j=1;j<array.length;j++)
{
if(array[j-1]>array[j]) //降序将判断条件改成小于号就可以了
{
int temp = array[j-1];
array[j-1]=array[j];
array[j]=temp;
}
}
}
return array;
}
public static void showarray(int[] array) //遍历显示数组
{
for (int i:array)
{
System.out.print(" "+i);
}
System.out.println("");
}结果是 1 3 4 15 24 63
1 3 4 15 24 63
为什么array[]数组也会被排序
刚开始学java 很多东西不懂 劳烦高手讲解详细点 最好再说说怎么不改变原数组的方法 谢谢了
{ int[] array = {63,4,24,1,3,15};
int[] newarray = arrayBubbleSort_up(array);
showarray(array);
showarray(newarray);
} public static int[] arrayBubbleSort_up(int[] array) //冒泡排序法
{
for(int i=1;i<array.length;i++)
{
for(int j=1;j<array.length;j++)
{
if(array[j-1]>array[j]) //降序将判断条件改成小于号就可以了
{
int temp = array[j-1];
array[j-1]=array[j];
array[j]=temp;
}
}
}
return array;
}
public static void showarray(int[] array) //遍历显示数组
{
for (int i:array)
{
System.out.print(" "+i);
}
System.out.println("");
}结果是 1 3 4 15 24 63
1 3 4 15 24 63
为什么array[]数组也会被排序
刚开始学java 很多东西不懂 劳烦高手讲解详细点 最好再说说怎么不改变原数组的方法 谢谢了
array = Arrays.copyOf(array, array.length);
谢谢 我试了下 这样的确是可以的
但是我更加疑惑了 这句话表面上看 不就是 把array[]复制到array[]?
以及这样写 为什么后面的排序算法就对本身的参数不产生排序效果了 谢谢了
浅复制的数组只会复制原数组的值,不会指向原数组。
修改了排序算法,原数组排序后顺序不变 public static int[] arrayBubbleSort_up(int[] array) //冒泡排序法
{
//int [] arrTemp = array;//深复制
int [] arrTemp = array.clone();//浅复制 for(int i=1;i<arrTemp.length;i++)
{
for(int j=1;j<arrTemp.length;j++)
{
if(arrTemp[j-1]>arrTemp[j]) //降序将判断条件改成小于号就可以了
{
int temp = arrTemp[j-1];
arrTemp[j-1]=arrTemp[j];
arrTemp[j]=temp;
}
}
}
return arrTemp;
}
int [] arrTemp = array.clone();//浅复制