A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 杨庆雷 中级黑马   /  2014-4-18 15:47  /  1536 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 杨庆雷 于 2014-4-20 11:49 编辑

排序结果 为什么会有两个一样的

360截图20140418154215834.jpg (135.38 KB, 下载次数: 31)

360截图20140418154215834.jpg

3 个回复

倒序浏览
测试过,是你打印的位置错了,你应该在第一个for()后面再加一个for语句专门用来打印:
  1. public static void sort(double[] arr){
  2.                 double temp;
  3.                 for(int x=0;x<arr.length;x++){
  4.                         for(int y=0;y<arr.length-x-1;y++){
  5.                                 if(arr[y]>arr[y+1]){
  6.                                         temp =arr[y];
  7.                                         arr[y]=arr[y+1];
  8.                                         arr[y+1]=temp;
  9.                                        
  10.                                 }
  11.                                
  12.                         }
  13.                        
  14.                        
  15.                        
  16.                 }
  17.                 //不能在第一个for循环中打印,要单独打印
  18.                 for(int x=0;x<arr.length;x++){
  19.                         System.out.println(arr[x]);
  20.                        
  21.                 }
  22.         }
  23.        
复制代码

评分

参与人数 1技术分 +1 收起 理由
枫儿 + 1 赞一个!

查看全部评分

回复 使用道具 举报
yanzhendong 发表于 2014-4-18 16:08
测试过,是你打印的位置错了,你应该在第一个for()后面再加一个for语句专门用来打印: ...

两个 3  是怎么出来的、、、
回复 使用道具 举报
你打印的不是最终排序好的数组,而是每一轮排完序的一个临时的数组对应的脚标位的元素。
现在分析下每一轮排序完的临时的数组。
第一轮排序结果:arr = {1,3,4,2,5,7,12,85,222};打印arr[0]=1;
第二轮排序结果:arr = {1,3,2,4,5,7,12,85,222};打印arr[1]=3;
第三了排序结果:arr = {1,2,3,4,5,7,12,85,222} ;打印arr[2]=3;
.................
你的两个三就是这样出来的。
你应该在整个数组排序完再遍历数组打印。

评分

参与人数 1技术分 +1 收起 理由
枫儿 + 1 赞一个!

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马