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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 执剑、砍人 中级黑马   /  2015-6-7 06:52  /  995 人查看  /  12 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

public class BubbleDemo {
        public static void main(String[] args) {
                int[] arr = { 3, 4, 9, 2, 5 };// 定义一个数组
                //打印数组
                for (int x = 0; x < arr.length; x++) {
                        System.out.print(arr[x]);
                }
                System.out.println("--------------------");
                array(arr);//定义排序功能
                //讲排玩序后的数组打印
                for (int y = 0; y < arr.length; y++) {
                        System.out.print(arr[y]);
                }
               
        }
        public static void array(int[] arr){
        // 进行arr.length-1次的轮的从前到后的比较
                        for (int i = 0; i < arr.length - 1; i++) {
                                // 讲少数组相邻的两个数比较,大的往后放
                                for (int j = 0; j < arr.length-1-i; j++) {
                                        if (arr[j] > arr[j++]) {
                                                int temp = arr[j];
                                                arr[j] = arr[j+1];
                                                arr[j+1] = temp;
                                        }       
                                }
                        }
        }
}
输出的结果都是原数组,方法没有用

评分

参与人数 3黑马币 +36 收起 理由
tream + 10 赞一个!
qsmaxmin + 20 受教了。。。顶起
胡谭龙 + 6 淡定

查看全部评分

12 个回复

倒序浏览
  1. public static void array(int[] arr) {
  2.                 // 进行arr.length-1次的轮的从前到后的比较
  3.                 for (int i = 0; i < arr.length - 1; i++) {
  4.                         // 讲少数组相邻的两个数比较,大的往后放
  5.                         for (int j = 0; j < arr.length - 1 - i; j++) {
  6.                                 if (arr[j] > arr[j+1]) {//问题出在这里,比较的时候不能用arr[j]和arr[j++]比较
  7.                                         int temp = arr[j];
  8.                                         arr[j] = arr[j + 1];
  9.                                         arr[j + 1] = temp;
  10.                                 }
  11.                         }
  12.                 }
  13.         }
复制代码

-------------------------------------------------
if (arr[j] > arr[j+1]) {//问题出在这里,比较的时候不能用arr[j]和arr[j++]比较
因为j++是先应用后加加,你这里的arr[j]>arr[j++]就相当于arr[j]>arr[j].
所以把arr[j]和arr[j++]中的arr[j++]改成arr[j+1]就行了。
回复 使用道具 举报
2楼正解
回复 使用道具 举报
比较的时候是数组前一个和数组后一个比,而你用j++就是就是自己和自己比了,因为j++是先赋值后++。
回复 使用道具 举报
顶贴,大家都好努力啊
回复 使用道具 举报
if (arr[j] > arr[j++])    是把y角标和y+1角标进行比较,不是和y++,
而且++放到右边是先运算在自增,++放在左边是先自增在运算。
回复 使用道具 举报
if (arr[j] > arr[j++]) 这个的问题,学习了
回复 使用道具 举报
就是上面说的问题。。学习了
回复 使用道具 举报
就是上面说的问题。。学习了
回复 使用道具 举报
qian0217wei 来自手机 高级黑马 2015-6-7 13:32:52
10#
改成++j就不会有这个问题了
回复 使用道具 举报
   if (arr[j] > arr[j++]) 这句有错
回复 使用道具 举报
楼上大神多  学习了
回复 使用道具 举报
你的J++还是没有理解透彻啊
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马