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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© \(^o^)/ 中级黑马   /  2014-4-18 12:31  /  1580 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

class AG
{
public static void main(String[] args)
{
  int[] arr={1,8,3,7,0,6,4,5};
  AD(arr);
  printA(arr);
  
}
public static void AD(int[] aq)
{
  for(int x=0;x<aq.length-1;x++)
  {
   for(int y=0;y<aq.length-x-1;y++)
   {
    if(aq[y]>aq[y+1])
    {
    int temp=aq[y];
    aq[y]=aq[y+1];
    aq[y+1]=temp;
    }
   }
  }
}
public static void printA(int[] qqq)
{
  System.out.print("[");
  for(int x=0;x<qqq.length;x++)
  {
   if(x<qqq.length-1)
   System.out.print(qqq[x]+",");
   else
   System.out.println(qqq[x]+"]");
  }
}
}
请问下两个for的嵌套循环可以写成一个for循环吗?怎么实现?

7 个回复

倒序浏览
上面的代码是不是先冒泡排序在打印结果?
想两个东西合成一个啊。。两个函数for不能连接一起,先排序,排完顺序再打印好点吧。
  1. public static void AD(int[] aq)
  2. {
  3.   for(int x=0;x<aq.length-1;x++)
  4.   {
  5.    for(int y=0;y<aq.length-x-1;y++)
  6.    {
  7.     if(aq[y]>aq[y+1])
  8.     {
  9.     int temp=aq[y];
  10.     aq[y]=aq[y+1];
  11.     aq[y+1]=temp;
  12.     }
  13.    }
  14.   }

  15. for(int x=0;x<aq.length-1;x++)
  16. System.out.print(aq[i]+",");

  17. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
菜小徐 + 1

查看全部评分

回复 使用道具 举报
去掉 for(int x=0;x<aq.length-1;x++)这一句会是什么效果
回复 使用道具 举报
如果是想将嵌套的for循环弄成一个,貌似不可能
回复 使用道具 举报
for的嵌套循环使用 是可以多个的  不过我们老实讲的  一般的业务很少会用到那么多的嵌套的
格式就是for(){
                for(){
                   for(){
            }
      }
}
回复 使用道具 举报
  1. class  Paixun
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.                 int[] arr={1,8,3,7,0,6,4,5};
  6.                 MaoPao.bubble(arr);
  7.         }
  8. }
  9. class MaoPao
  10. {        public static void bubble(int[] arr)
  11.         {
  12.                 for (int x = 0; x < arr.length ; x++ )
  13.                 {
  14.                         for (int y = 0; y < arr.length - x - 1 ; y++ )
  15.                         {
  16.                                 if (arr[y] > arr[y+1])
  17.                                 {
  18.                                         change(arr,y,y+1);
  19.                                 }
  20.                         }
  21.                 }
  22.                 for (int i = 0; i < arr.length ; i++ )
  23.                 {
  24.                         System.out.println(arr[i] + "  ");
  25.                 }
  26.         }
  27. }
复制代码
回复 使用道具 举报
vtming 中级黑马 2014-4-19 02:33:02
7#
下面是我写的单个for循环的排序写法。不过没多大意思,没必要非要追求一个循环。
java有提供封装好的排序方法,在工具类Arrays里,比自己写的排序效率要高。
public static int[] f4() {
                int[] a={3,5,2,6,8,4};
                int temp =0;
                int min=0;
                for(int i=1,j=0;j<a.length-1;i++){
                        if(a[i]<a[min]){
                                min=i;
                        }
                        if(i==a.length-1){
                                temp=a[min];
                                a[min]=a[j];
                                a[j]=temp;
                                j++;
                                i=j;
                                min=j;
                        }
                }
                return a;
        }
回复 使用道具 举报
彭飞 中级黑马 2014-4-20 16:07:32
8#
个人认识楼主的出发点是对代码的简洁思维。
个人认为楼主应该不要太在意一些比较牛角尖的问题。
比如楼主冒泡排序法,用到2个for循环,外循环一次,内循环一遍。
楼主如果非要用一个for循环,或许有办法搬到,但是感觉有点。。。打个比方:
常说一日三餐, 假如改成一日一餐,那么及时吃得再饱,下午也会饿的。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马