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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

public class test{
public static void main(String[] args) {
       int[]it={1,3,9,5,8,3,6,2};
       for(int i=0;i<it.length-1;i++)
           {
             for(int j=i+1;j<it.length;j++)
           {
            if(it[i]<it[j])
           {
            int temp=it[i];
           it[i]=it[j];
           it[j]=temp;
           }
           }
           for(int i1=0;i1<it.length;i1++)
            System.out.print(it[i1]);
           }
        }

}

评分

参与人数 1技术分 +1 收起 理由
黄奕豪 + 1 基础很重要~

查看全部评分

6 个回复

倒序浏览

CA

本帖最后由 马林康 于 2012-6-13 16:24 编辑
  1. 7 class  BubbleMethod
  2. 8 {
  3. 9     public static void main(String[] args)
  4. 10     {
  5. 11         int[] a={2,92,34,54,28};
  6. 12         bubbleMethod(a);
  7. 13     }
  8. 14     public static void bubbleMethod(int[] a)
  9. 15     {
  10. 16         for(int i=1;i<a.length;i++)
  11. 17         {
  12. 18             for(int j=1;j<=a.length-i;j++)
  13. 19             {
  14. 20                 if(a[j-1]>a[j])
  15. 21                 {
  16. 22                     int temp = a[j-1];
  17. 23                     a[j-1] = a[j];
  18. 24                     a[j] = temp;
  19. 25                 }
  20. 26             }
  21. 27         }
  22. 28         for(int i=0;i<a.length;i++)
  23. 29         {
  24. 30             System.out.print(a[i]+" ");
  25. 31         }
  26. 32     }
  27. 33 }
复制代码
你的第二个循环 赋值有误 ,参考我的

评分

参与人数 1技术分 +1 收起 理由
黄奕豪 + 1 赞一个!

查看全部评分

回复 使用道具 举报
  1. public class test
  2. {
  3.     public static void main(String[] args)
  4.         {
  5.        int [] it = {1,3,9,5,8,3,6,2};
  6.        for(int i=0;i<it.length-1;i++)
  7.        {
  8.            for(int j=i+1;j<it.length;j++)
  9.            {
  10.                  if(it[i]<it[j])
  11.                  {
  12.                  int temp=it[i];
  13.                    it[i]=it[j];
  14.                    it[j]=temp;
  15.                   }
  16.            }
  17.            }
  18.        for(int i=0;i<it.length;i++)
  19.             System.out.print(it[i]);
  20.      }
  21. }
复制代码
你的是选择排序,将排好序的元素输出这个循环要放在那个排序双层循环外面。

评分

参与人数 1技术分 +1 收起 理由
黄奕豪 + 1 赞一个!

查看全部评分

回复 使用道具 举报

public class test {
        public static void main(String[] args) {
                int[] it = { 1, 3, 9, 5, 8, 3, 6, 2 };
                for (int i = 0; i < it.length - 1; i++) {
                        for (int j = i + 1; j < it.length; j++) {
                                if (it < it[j]) {
                                        int temp = it;
                                        it = it[j];
                                        it[j] = temp;
                                }
                        }
/*                        for (int i1 = 0; i1 < it.length; i1++)
                                System.out.print(it[i1]);*/
                }
                //首先程序并没有错,你使用了简单的选择从大到小排序;
                //只是你想打印结果的放错了位置,应该放在这里
                for (int i1 = 0; i1 < it.length; i1++)
                        System.out.print(it[i1]);
        }

}

评分

参与人数 1技术分 +1 收起 理由
黄奕豪 + 1 恭喜~~

查看全部评分

回复 使用道具 举报
给推荐一个简单的排序方法

        public static void main(String[] args)

        {
                int[] it = { 1, 3, 9, 5, 8, 3, 6, 2 };
                Arrays.sort(it);
                for (int i = 0; i < it.length - 1; i++) {
                        System.out.println(it[i]);
                }
        }
回复 使用道具 举报
/*public class test
{
public static void main(String[] args) {
       int[]it={1,3,9,5,8,3,6,2};
       for(int i=0;i<it.length-1;i++)
           {
             for(int j=i+1;j<it.length;j++)//3 因为你下面的当这个循环每执行一次。那么最小和第二小元素已经分别出现在了
          //it.length-1,it.length-2,it.length-3;的角标上了;所以此处为了提高效率可以设定一个
          //变量z。让其每一次自减一次。可以减少2步骤中的比较次数;发现变量z的值和i一致;
          //所以循环表达示可以写成for(int j=0;j<it.length-x-1;j++)会更有效率;
         
           {
            if(it[i]<it[j])//2 当第二个for循环第一次执行到最后的时候。数组中的最小值已经出现在了最后一个位置上了;
           {
            int temp=it[i];
           it[i]=it[j];
           it[j]=temp;
           }
           }
           for(int i1=0;i1<it.length;i1++)//1 我猜想你的本意是用些循环来遍历数组吧;
          //但你把他定义在了数组的换位操作也就是第一个for循环里面;
          //这样的结果就是你每执行一次换位操作都会把换位后的数组打印一遍;
          //因此你的输出结果是很多个数组;
            System.out.print(it[i1]);
           }
        }
}
*/
//下面给出完整代码;
public class test
{
public static void main(String[] args)
{
       int[]it={1,3,9,5,8,3,6,2};
       for(int i=0;i<it.length-1;i++)//-1:当最后一个数字时不用自己和自己比较。优化代码用。不减也可以;
       {
   for(int j=0;j<it.length-i-1;j++)//-x让第一次的比较的元素不断减少提高运行效率。不减也能实现功能,-1:避免角标越界;
         {
           if(it[j]<it[j+1])//这就是让相邻两个数相互比较的关键代码代码;
           {
            int temp=it[j];
           it[j]=it[j+1];
           it[j+1]=temp;
           }
          }
           
        }
  for(int i1=0;i1<it.length;i1++)
  {
            System.out.print(it[i1]);
  }
     }
}

回复 使用道具 举报
邓杰 中级黑马 2012-6-13 17:55:24
7#
/*public class test
{
public static void main(String[] args) {
       int[]it={1,3,9,5,8,3,6,2};
       for(int i=0;i<it.length-1;i++)
           {
             for(int j=i+1;j<it.length;j++)//3 因为你下面的当这个循环每执行一次。那么最小和第二小元素已经分别出现在了
          //it.length-1,it.length-2,it.length-3;的角标上了;所以此处为了提高效率可以设定一个
          //变量z。让其每一次自减一次。可以减少2步骤中的比较次数;发现变量z的值和i一致;
          //所以循环表达示可以写成for(int j=0;j<it.length-x-1;j++)会更有效率;
         
           {
            if(it<it[j])//2 当第二个for循环第一次执行到最后的时候。数组中的最小值已经出现在了最后一个位置上了;
           {
            int temp=it;
           it=it[j];
           it[j]=temp;
           }
           }
           for(int i1=0;i1<it.length;i1++)//1 我猜想你的本意是用些循环来遍历数组吧;
          //但你把他定义在了数组的换位操作也就是第一个for循环里面;
          //这样的结果就是你每执行一次换位操作都会把换位后的数组打印一遍;
          //因此你的输出结果是很多个数组;
            System.out.print(it[i1]);
           }
        }

}
*/
//下面给出完整代码;
public class test
{
public static void main(String[] args)
{
       int[]it={1,3,9,5,8,3,6,2};
       for(int i=0;i<it.length-1;i++)//-1:当最后一个数字时不用自己和自己比较。优化代码用。不减也可以;
       {
   for(int j=0;j<it.length-i-1;j++)//-x让每一次的比较的元素不断减少提高运行效率。不减也能实现功能,-1:避免角标越界;
         {
           if(it[j]<it[j+1])//这就是让相邻两个数相互比较的关键代码代码;
           {
            int temp=it[j];
           it[j]=it[j+1];
           it[j+1]=temp;
           }
          }
           
        }
  for(int i1=0;i1<it.length;i1++)
  {
            System.out.print(it[i1]);
  }
     }

}

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