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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 奋斗的小强29 中级黑马   /  2013-1-13 16:12  /  2091 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. class SelectSort
  2. {
  3. public static void main(String[] args)
  4. {
  5. int[] arry = {5,9,3,1,7,9,4,6};
  6. printArry(arry);
  7. selectSort(arry);
  8. printArry(arry);
  9. }
  10. public static void selectSort(int[] arry)
  11. {
  12. for(int x=0;x<arry.length-1;x++)
  13. {
  14. for(int y=1;y<arry.length;y++)
  15. {
  16. if(arry[x]>arry[y])
  17. {
  18. int temp = arry[x];
  19. arry[y] = arry[x];
  20. arry[y] = temp;//这下面为啥不需要返回值呢?
  21. }
  22. }
  23. }
  24. }
  25. public static void printArry(int[] arry)
  26. {
  27. System.out.print("[");
  28. for(int x=0;x<arry.length;x++)
  29. {
  30. if(x!=arry.length-1)
  31. System.out.print(arry[x]+",");
  32. else
  33. System.out.println(arry[x]+"]");

  34. }

  35. }
  36. }
复制代码
这个类运行时结果为啥会是这样?
[5,9,3,1,7,9,4,6]
[5,9,9,9,9,9,9,9]

评分

参与人数 1技术分 +1 收起 理由
李培根 + 1 赞一个!

查看全部评分

6 个回复

倒序浏览
本帖最后由 细雨不和风 于 2013-1-13 16:29 编辑



  • printArry(arry);
  • selectSort(arry);
  • printArry(arry);

1方法,是用来打印出指定的数组的,

2方法,是对数组进行排序操作,只是对数组里面的元素按大小排好顺序,这是方法2的功能,

3方法,还是打印的数组的方法,但执行这个方法时,2方法已经对数组进行了排序的改动,此时的数组里的元素已经拍好了顺序。
只需打印出来就可以了,就不需要返回值,而你的方法也没定义是没有有返回值类型的,如果返回值的话会报错的。

评分

参与人数 1黑马币 +6 收起 理由
Rancho_Gump + 6 赞一个!

查看全部评分

回复 使用道具 举报
在for(int y=1;y<arry.length;y++) * 在你内循环要改成int y=x+1 因为在比较过程中他本身不需要比较只需要比较他后面的数就可以了
        int temp = arry[x];
        arry[y] = arry[x];
        arry[y] = temp;
        应该改成
        int temp = arry[x];
        arry[x] = arry[y];
        arry[y] = temp;
        因为你把arry[x]的值赋给temp后 应该再把arry[y]的值赋给arry[x] 然后再把temp的值赋给arry[y]
        这是他们比较大小之后相互换位
        arry[y] = temp;//这下面为啥不需要返回值呢? 这里不需要返回值那是因为你所定义的方法为void所以不需要返回值

评分

参与人数 1黑马币 +9 收起 理由
Rancho_Gump + 9 赞一个!

查看全部评分

回复 使用道具 举报
细雨不和风 发表于 2013-1-13 16:28
  • printArry(arry);
  • selectSort(arry);
  • printArry(arry);

  • 谢谢了,我看看。。。
    回复 使用道具 举报
    林其荣 发表于 2013-1-13 16:39
    在for(int y=1;y

    :handshake谢谢
    回复 使用道具 举报
    奋斗的小强29 发表于 2013-1-13 16:57
    谢谢了,我看看。。。

    呵呵,不用谢
    回复 使用道具 举报
    问题1:20.arry[y] = temp;//这下面为啥不需要返回值呢?   答:需不需要返回值是由方法决定的,当方法是void类型就不需要返回值
    问题2:01.class SelectSort

    02.{

    03.public static void main(String[] args)

    04.{

    05.int[] arry = {5,9,3,1,7,9,4,6};

    06.printArry(arry);

    07.selectSort(arry);

    08.printArry(arry);

    09.}

    10.public static void selectSort(int[] arry)

    11.{

    12.for(int x=0;x<arry.length-1;x++)

    13.{

    14.for(int y=1;y<arry.length;y++)//这里应该是for(int y = x+1; y<arry.length; y++)
    ,对于排列的问题,自己把数组是图画出来容易理解
    15.{

    16.if(arry[x]>arry[y])

    17.{

    18.int temp = arry[x];

    19.arry[y] = arry[x];//这里应该是arry[x] = arry[y];
    20.arry[y] = temp;//这下面为啥不需要返回值呢?

    21.}

    22.}

    23.}

    24.}

    25.public static void printArry(int[] arry)

    26.{

    27.System.out.print("[");

    28.for(int x=0;x<arry.length;x++)

    29.{

    30.if(x!=arry.length-1)

    31.System.out.print(arry[x]+",");

    32.else

    33.System.out.println(arry[x]+"]");

    34.

    35.}

    36.

    37.}

    38.}




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