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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 余善航 中级黑马   /  2013-1-7 23:55  /  1079 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

public static void name(int[] arr){
                int q;
                for(int e=0;e<arr.length-1;e++){
                        for(int u=0;u<arr.length-e-1;u++){
                                if(arr[e]<arr[e+1]){
                                        q=arr[e];
                                        arr[e]=arr[e+1];
                                        arr[e+1]=q;
                                }
                        }
                }
               
               
        }

评分

参与人数 1技术分 +1 收起 理由
冯海霞 + 1 鼓励一下!遇到代码不要着急,仔细检查肯定.

查看全部评分

4 个回复

倒序浏览
你这是冒泡排序,所以  if(arr[e]<arr[e+1]){这句错了,把e改成内循环的u就可以了当然下面的换位置也要改成u的
回复 使用道具 举报
      for(int e=0;e<arr.length-1;e++){
                         for(int e=0;u<arr.length-e-1;e++){
                                 if(arr[e]<arr[e+1]){
                                        int q=arr[e];
                                         arr[e]=arr[e+1];
                                         arr[e+1]=q;
                                 }
                         }交换用的变量需要声明类型啊,还有,你的字母写错了,字母能排,不报错吗
                 }
回复 使用道具 举报
本帖最后由 陈丽莉 于 2013-1-8 10:11 编辑

    一楼说的很对,就是内循环的数据角标用混了。
    内循环的大概意思是,先从arr[0]开始到arr[arr.length-1-1]都和它的后一位比较并按大小决定是否交换,这样一轮下来,arr[0]中的数就是已经比较出来的最大或最小值;然后再从arr[1]开始到arr[arr.length-1-1],比较自身和后一位的大小。。理解了这些,再好好思考一下,自然就不会将比较的角标弄混了。
    为了直观,我把修改后的代码贴一下吧。

不知道怎么回事儿,回帖总是有下划线,还老不见了下脚标,没办法只好传截图了。

1.png (3.13 KB, 下载次数: 31)

1.png

评分

参与人数 1技术分 +1 收起 理由
冯海霞 + 1

查看全部评分

回复 使用道具 举报
本帖最后由 陈丽莉 于 2013-1-8 10:12 编辑

怎么回事。。 下划线去不掉啦  - -|||
【u】,用中文输入法写的下脚标,看看还在么。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马