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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© HMjack168 中级黑马   /  2015-3-24 15:17  /  1339 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 HMjack168 于 2015-3-24 15:20 编辑
  1. class px
  2. {
  3.                 public static void main(String[] args)
  4.         {        
  5.                         int[] abc={3,1,2,9,8,7};
  6.                         mppx(abc);
  7.         }
  8.         //选择排序
  9.                 /*
  10.                 public static void xzpx(int[] nl)
  11.                 {
  12.                         System.out.print("{");
  13.                         for(int x=0;x<nl.length;x++)
  14.                 {
  15.                         for(int y=x+1;y<nl.length;y++)
  16.                                 if(nl[x]>nl[y])
  17.                         {
  18.                                 int ls=nl[x];
  19.                                 nl[x]=nl[y];
  20.                                 nl[y]=ls;
  21.                         }
  22.                                 if (x!=nl.length-1)
  23.                                 System.out.print(nl[x]+",");
  24.                                 else
  25.                                 System.out.print(nl[x]+"}");
  26.                 }

  27.                 }
  28.                 */
  29.                         //冒泡排序
  30.                         public static void mppx(int[] nl_2)
  31.                         {
  32.                                 System.out.print("{");
  33.                                 for(int x=0;x<nl_2.length-1;x++)
  34.                                 {
  35.                                         for(int y=0;y<nl_2.length-x-1;y++)
  36.                                         if(nl_2[y]>nl_2[y+1])
  37.                                                 {
  38.                                                         int ls=nl_2[y];
  39.                                                         nl_2[y]=nl_2[y+1];
  40.                                                         nl_2[y+1]=ls;
  41.                                                 }
  42.                                                         if (x!=nl_2.length-1)
  43.                                                         System.out.print(nl_2[x]+",");
  44.                                                         else
  45.                                                         System.out.print(nl_2[x]+"}");
  46.                                 }
  47.                         }
  48. }                                              选择排序中的数组长度不减1的话可以完整输出,冒泡排序中的减了1(视频教程中也减了1),输出结果如下图,为什么呀?                                                
复制代码

QQ截图20150324151342.png (1.17 KB, 下载次数: 23)

QQ截图20150324151342.png

评分

参与人数 1技术分 +1 收起 理由
万合天宜 + 1

查看全部评分

8 个回复

倒序浏览
for(int x=0;x<nl_2.length-1;x++)
这里由于x<nl_2.length-1
所以x走不到最后一位 x只可能等于nl_2.length-1-1

所以
if (x!=nl_2.length-1)
System.out.print(nl_2[x]+",");
else
System.out.print(nl_2[x]+"}");

else 的语句不可能满足条件,无法输出

评分

参与人数 1技术分 +1 收起 理由
万合天宜 + 1 很给力!

查看全部评分

回复 使用道具 举报
第一层for循环的应该改为 for(int x=0;x<nl_2.length;x++),这里不能减1的 x是数组下标,nl_length是数组长度,也可以写成 for(int x=0;x<=nl_2.length-1;x++)
回复 使用道具 举报
  1. for(int y=0;y<nl_2.length-x-1;y++)
复制代码

这行代码,写成
  1. for(int y=x+1;y<nl_2.length;y++)
复制代码

应该就没有问题了~

评分

参与人数 1技术分 +1 收起 理由
万合天宜 + 1

查看全部评分

回复 使用道具 举报
楼上说的对
回复 使用道具 举报

有道理,冒泡不像选择,哪怕外循环取到最后一个角标,内循环也不会越界,是我疏忽了。
回复 使用道具 举报
longlongint 发表于 2015-3-24 17:12
第一层for循环的应该改为 for(int x=0;x

嗯,也可以
回复 使用道具 举报
黑色救护车 发表于 2015-3-24 17:25
这行代码,写成

应该就没有问题了~

:handshake
回复 使用道具 举报
外层循环,x<n1_2.length;
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马