转载请注明出处,原文地址: http://blog.csdn.net/h28496/article/details/44732713
中北大学 郑海鹏
最近在复习那九大排序算法时,意外的发现用冒泡排序、插入排序、选择排序等in-place sort时,
sort(a);
再把a输出,就是已经排好序的新数组了。
但是用归并排序等out-place sort时,sort(a); 之后,输出的还是原来的数组!
为什么呢?请看代码和里面的注释:
package zhp.outplace_sort; import zhp.Tools; public class Test { public static void main(String[] args) { int[] a1 = {1, 2, 3, 4, 5}; int[] a2 = {1, 2, 3, 4, 5}; f1(a1); f2(a2); Tools.print(a1); // 输出数组 Tools.print(a2); } /** * 方法内改变参数的值(在原内存单元操作),方法结束后参数值是改变后的。 */ public static void f1(int[] a){ for(int i = 0; i < a.length; i++){ a[i]++; } } /** * 方法内将参数指向一个新的地址后,方法结束后参数还是会指向原来的地址。 */ public static void f2(int[] a){ a = new int[]{2, 3, 4, 5, 6}; } }
输出:
2 3 4 5 6
1 2 3 4 5
明白了吧~
时间: 2024-10-10 09:01:29