数组排序的问题

大板牙花生 2014-03-22 10:31:33
由于对java基础不太了解,特别是计算机内存结构方面的东西
int[] array = new int[10];
array =.....
操作一:
int[] test1= array;
操作二:
int[] test2 = array.clone();
Arrays.sort(test1);
Arrays.sort(test2);
test1=array,
test2!=array,
难道是因为test1只是array的引用吗,无论怎样排序没有影响吗?

另外Arrays.sort();的效率是否比自己实现的效率要高的多,是否考虑到了不同大小情况下的数组的排序的效率问题?

...全文
121 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
gaofuqi 2014-03-24
  • 打赏
  • 举报
回复
引用 5 楼 wter26 的回复:
[quote=引用 1 楼 gaofuqi 的回复:] 谁说没有影响的

int[] array = {1,5,9,6,8,9};

		int[] test1= array;
		int[] test2 = array.clone();
		 Arrays.sort(test1);
		 Arrays.sort(test2);
		 System.out.println(Arrays.toString(test1));
		 System.out.println(Arrays.toString(test2));
		 test1=array;
		 test2=array;
		 System.out.println(Arrays.toString(test1));
		 System.out.println(Arrays.toString(test2));
上面的代码输出: [1, 5, 6, 8, 9, 9] [1, 5, 6, 8, 9, 9] [1, 5, 6, 8, 9, 9] [1, 5, 6, 8, 9, 9] 看了一下Arrays的源码,当数组长度小于7时,采用的是冒泡排序;数组长度大于等于7时,采用的快速排序;
我想表述的意思是两个对象不同,不是他们排序的结果是否相同。排序的结果肯定相同。 另外,插入排序什么的,还是问问你有没有比算法导论稍微浅层次的教程,这个有些晦涩。[/quote] 应该是两个引用的对象是同一个数组对象,你定义的是两个引用变量不是两个数组对象。算法我也只了解基本的,其他的也不大清楚。我看的算法都是从《数据结构》(严蔚敏版的)了解的,里面对常用的算法都有很详细的介绍,而且结合图的方式说明,很好理解。
大板牙花生 2014-03-23
  • 打赏
  • 举报
回复
引用 1 楼 gaofuqi 的回复:
谁说没有影响的

int[] array = {1,5,9,6,8,9};

		int[] test1= array;
		int[] test2 = array.clone();
		 Arrays.sort(test1);
		 Arrays.sort(test2);
		 System.out.println(Arrays.toString(test1));
		 System.out.println(Arrays.toString(test2));
		 test1=array;
		 test2=array;
		 System.out.println(Arrays.toString(test1));
		 System.out.println(Arrays.toString(test2));
上面的代码输出: [1, 5, 6, 8, 9, 9] [1, 5, 6, 8, 9, 9] [1, 5, 6, 8, 9, 9] [1, 5, 6, 8, 9, 9] 看了一下Arrays的源码,当数组长度小于7时,采用的是冒泡排序;数组长度大于等于7时,采用的快速排序;
我想表述的意思是两个对象不同,不是他们排序的结果是否相同。排序的结果肯定相同。 另外,插入排序什么的,还是问问你有没有比算法导论稍微浅层次的教程,这个有些晦涩。
tony4geek 2014-03-22
  • 打赏
  • 举报
回复
看下源码
-江沐风- 2014-03-22
  • 打赏
  • 举报
回复
Arrays.sort()的效率不一定有自己实现的效率高! 看下sort方法的源码。
Computer 2014-03-22
  • 打赏
  • 举报
回复
这个...代码一运行啥都明了了吧...
gaofuqi 2014-03-22
  • 打赏
  • 举报
回复
谁说没有影响的

int[] array = {1,5,9,6,8,9};

		int[] test1= array;
		int[] test2 = array.clone();
		 Arrays.sort(test1);
		 Arrays.sort(test2);
		 System.out.println(Arrays.toString(test1));
		 System.out.println(Arrays.toString(test2));
		 test1=array;
		 test2=array;
		 System.out.println(Arrays.toString(test1));
		 System.out.println(Arrays.toString(test2));
上面的代码输出: [1, 5, 6, 8, 9, 9] [1, 5, 6, 8, 9, 9] [1, 5, 6, 8, 9, 9] [1, 5, 6, 8, 9, 9] 看了一下Arrays的源码,当数组长度小于7时,采用的是冒泡排序;数组长度大于等于7时,采用的快速排序;

67,514

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧