广告广告
  加入我的最爱 设为首页 风格修改
首页 首尾
 手机版   订阅   地图  繁体 
您是第 3584 个阅读者
 
<<   1   2  下页 >>(共 2 页)
发表文章 发表投票 回覆文章
  可列印版   加为IE收藏   收藏主题   上一主题 | 下一主题   
ezlovekbm 手机
数位造型
个人文章 个人相簿 个人日记 个人地图
小人物
级别: 小人物 该用户目前不上站
推文 x0 鲜花 x3
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片
推文 x0
[Java] 我们期末考要考2维阵列有大大可以交一下吗??
首先老师会请你印出你的学号跟姓名

第二步会请你印出"未排序的资料"

第三步会请你印出"指定科目的排序"

期末考题型 我看不太懂2维的泡沫排序

可以请大大指点一下 谢谢 大概还会有啥变化

老师说这题会了就差不多了

public class D950104{
public static void main (String[] args){
double week [] []={{18.2,17.3,15.0,13.4,0},
{23.8,25.1,20.6,17.8,0},
{20.6,21.5,18.4,15.7,0}}; //所输入的质,后面之所以会多各0是为了补足AVG/4的不足
String n[] ={"早上","中午","晚上"};
boolean flag=true;
double temp=0;
String tempstring;
System.out.println("未排序");
System.out.println("时段"+"\t"+"星期一"+"\t"+"星期二"+"\t"+"星期三"+"\t"+"星期四"+"\t"+ ..

访客只能看到部份内容,免费 加入会员 或由脸书 Google 可以看到全部内容



[ 此文章被ezlovekbm在2006-01-15 11:43重新编辑 ]



献花 x0 回到顶端 [楼 主] From:APNIC | Posted:2006-01-15 01:42 |
pt730907
数位造型
个人文章 个人相簿 个人日记 个人地图
初露锋芒
级别: 初露锋芒 该用户目前不上站
推文 x26 鲜花 x99
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

所以你到底想问的是第几步?
第一步、第二步还是第三步?
还是通通都不会?
请把想问的问题说清楚....
你说看不太懂2维的泡沫排序
那首先要先了解的就是泡沫排序的定义....
什么是泡沫排序呢?
下面这个投影片有相关介绍:
投影片
PS:建议你将程式码用[ code][ /code](请看论坛语法)这样程式码比较清楚....


献花 x0 回到顶端 [1 楼] From:台湾中华电信 | Posted:2006-01-15 02:28 |
pt730907
数位造型
个人文章 个人相簿 个人日记 个人地图
初露锋芒
级别: 初露锋芒 该用户目前不上站
推文 x26 鲜花 x99
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

这是将你的程式改写过后的程式码
应该是你想要的结果....
我加上注解了
希望你能看的懂我的解释.....

只是老实说我觉得我写的程式码不够好...
请各位先贤前辈多多指教噜.... 表情
小弟献丑了..... 表情

复制程式
public class D950104
{
    private static double week [][]={{18.2,17.3,15.0,13.4,0},//所输入的值,后面之所以
                                     {23.8,25.1,20.6,17.8,0},//会多个0是为了补足AVG/4的不足
                                     {20.6,21.5,18.4,15.7,0}};
    public static int i1=0;       //用来控制平均气温之印出位置
    private static double  avg = 0; //宣告平均数
    public static void out(String []k)
       {
           int i,j,s;
           for(i=0,s=0;i<week.length && s<k.length;i++,s++)
           {
                  System.out.print(k[s] + "\t");
                  for(j=0;j<=week.length;j++)
                  { 
                    System.out.print(week[ i ][j]+"\t");                    
                    calculate(week[ i ][j],j,i);//呼叫函式进行计算     
                  }  
           }
       }
    public static void calculate(double cal,int check1,int check2)//计算平均数
    {           
           avg = avg + cal; //平均数的加总
           if(check1==week.length && check2!=week.length)//控制何时该呼叫函式进行印出
           {                                             //并进行换行以排版
                  outavg(check1);       //呼叫函式进行印出平均数
                  System.out.println();//换行
           }
    }
    public static void outavg(int aj)       //印出平均数
    {
           week[i1][aj+1] = avg/4;
           System.out.print(Math.round(week[i1][aj+1]*1000)/1000.0+"\t");//四舍五入到小数点三位
           i1++;
           avg=0;
    }
    public static void sort()                     //进行气泡排序
    {
           int k,l;
           for (k=0;k<week.length;k++)
           { 
                         for (l=0;l+1<=week.length;l++)
                         {
                                if (week[k][l]>week[k][l+1])//当原数值大于后数值时
                                {                           //进行交换
                                       double tempstring=week[k][l];
                                       week[k][l] = week[k][l+1];
                                       week[k][l+1] = tempstring;
                                }
                         }                  
           }
           k=0;l=0;
           if(week[k][l]>week[k][l+1])           //如果最小值不在最左边的话就递回
           {sort();}
           else
           {System.out.println();}               //符合情况时空行
    }
       public static void main (String[] args)
       {
          String n[] ={"早上","中午","晚上"};
          System.out.println("未排序");
          System.out.println("时段"+"\t"+"星期一"+"\t"+"星期二"+"\t"+"星期三"+
          "\t"+"星期四"+"\t"+"平均气温");
          System.out.println("------"+"\t"+"------"+"\t"+"------"+"\t"+"------"
          +"\t"+"------"+"\t"+"--------");           
          out(n);              //呼叫函式进行排序前印出
          sort();              //呼叫函式进行排序
          System.out.println("排序后");
          System.out.println("时段"+"\t"+"星期一"+"\t"+"星期二"+"\t"+"星期三"+
          "\t"+"星期四"+"\t"+"平均气温");
          System.out.println("------"+"\t"+"------"+"\t"+"------"+"\t"+"------"
          +"\t"+"------"+"\t"+"--------");     
          i1=0;              //重新初使化,为了印出排序过后的平均气温
          out(n);              //呼叫函式进行排序后印出
       }
} 


[ 此文章被pt730907在2006-01-16 11:44重新编辑 ]


献花 x0 回到顶端 [2 楼] From:台湾中华电信 | Posted:2006-01-15 06:34 |
ezlovekbm 手机
数位造型
个人文章 个人相簿 个人日记 个人地图
小人物
级别: 小人物 该用户目前不上站
推文 x0 鲜花 x3
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

这段程式码我看不太懂

可以请大大指点一下吗 谢谢...



复制程式
 for (int i=week.length-2;i>=0;i--){  //这边我忘记了,为什么要-2,至于--的话,是要往回找
        for (int j=0;j<=i;j++){
         if (week[j][4]>week[j+1][4])
         {
          for (int k=0;k<week[j].length;k++){   //这一各回圈是宣告比较的,不然要写很多行
           temp=week[j][k];
              week[j][k]=week[j+1][k];
           week[j+1][k]=temp;
          }
          tempstring=n[j];  //tempstring是宣告给N用的
          n[j]=n[j+1];
          n[j+1]=tempstring;
          
     


献花 x0 回到顶端 [3 楼] From:APNIC | Posted:2006-01-15 11:42 |
pt730907
数位造型
个人文章 个人相簿 个人日记 个人地图
初露锋芒
级别: 初露锋芒 该用户目前不上站
推文 x26 鲜花 x99
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

把你的程式码跑过一遍后...
才知道你想要的泡沫排序法是判断平均气温的高低来作为
阵列元素两两交换的依归....
我把解释标记在注解里....
还有这边给你一点点小建议
就是最好不要主程式(main)就包含了所有的功能...
换句话说,你应该另外宣告一些方法(method)来分别负责处理各自的功能....
以你这个例子来说,可以宣告三个方法:一个负责印出、一个负责排序、一个负责计算平均数....
可视需要另行增加
而main函式主要是用来呼叫其他方法....
这样发生错误时也比较容易侦错...
且别人也比较能够看懂你的程式码....

复制程式
for (int i=week.length-2;i>=0;i--){  //设成length-2原因是为了要先让第二阵列之平均气温
     for (int j=0;j<=i;j++){              //和最后阵列之平均气温相比较,至于--的话,是要往回找
       if (week[j][4]>week[j+1][4])              //如原平均气温大于后平均气温
       {
         for (int k=0;k<week[j].length;k++){//则两两阵列全部元素进行交换
         temp=week[j][k];
         week[j][k]=week[j+1][k];
         week[j+1][k]=temp;
       }
       tempstring=n[j];  //交换时段
       n[j]=n[j+1];
       n[j+1]=tempstring;
     }
}


献花 x0 回到顶端 [4 楼] From:台湾中华电信 | Posted:2006-01-15 15:24 |
pt730907
数位造型
个人文章 个人相簿 个人日记 个人地图
初露锋芒
级别: 初露锋芒 该用户目前不上站
推文 x26 鲜花 x99
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

这是我把我的程式码修改成你的学校所要求的结果....
程式执行结果和你的程式码执行结果一模一样...
只是唯一的差别是在于我的程式具有物件导向的观念
也就是说每个方法都负责各自的功能...
不会只交由main函式处理....
感觉起来也比较清楚....
复制程式
public class D950104
{
    private static double week [][]={{18.2,17.3,15.0,13.4,0},//所输入的值,后面之所以
                                     {23.8,25.1,20.6,17.8,0},//会多个0是为了补足AVG/4的不足
                                     {20.6,21.5,18.4,15.7,0}};
    public static int i1=0;       //用来控制平均气温之印出位置
    private static double  avg = 0; //宣告平均数
    public static void out(String []k)
       {
           int i,j,s;
           for(i=0,s=0;i<week.length && s<k.length;i++,s++)
           {
                  System.out.print(k[s] + "\t");
                  for(j=0;j<=week.length;j++)
                  { 
                    System.out.print(week[ i ][j]+"\t");                    
                    calculate(week[ i ][j],j,i);//呼叫函式进行计算     
                  }  
           }
       }
    public static void calculate(double cal,int check1,int check2)//计算平均数
    {           
           avg = avg + cal; //平均数的加总
           if(check1==week.length && check2!=week.length)//控制何时该呼叫函式进行印出
           {                                             //并进行换行以排版
                  outavg(check1);       //呼叫函式进行印出平均数
                  System.out.println();//换行
           }
    }
    public static void outavg(int aj)       //印出平均数
    {
           week[i1][aj+1] = avg/4;
           System.out.print(week[i1][aj+1]+"\t");
           i1++;
           avg=0;
    }
    public static void sort(String []t)                     //进行气泡排序
    {
           int k,l;
           int z=0;
           for (k=0;k<week.length;k++)
           { 
                         for (l=k;l+1<week.length;l++)
                         {
                                if (week[l][4]>week[l+1][4])//当原数值大于后数值时
                                {                           //进行交换                                       
                                          while(z<=week.length+1)
                                          {
                                                        double tempstring=week[l][z];
                                                        week[l][z] = week[l+1][z];
                                                        week[l+1][z] = tempstring;
                                                        z++;
                                          }
                                          String swap = t[l];       //进行时段交换
                                          t[l] = t[l+1];
                                          t[l+1] = swap;
                                }
                                z=0;
                         }                  
           }
             k=0;l=0;
             if(week[l][4]>week[l+1][4])           //如果最小值不在最左边的话就递回
             {sort(t);}
             else
             {System.out.println();}               //符合情况时空行
    }
       public static void main (String[] args)
       {
          String n[] ={"早上","中午","晚上"};
          System.out.println("未排序");
          System.out.println("时段"+"\t"+"星期一"+"\t"+"星期二"+"\t"+"星期三"+
          "\t"+"星期四"+"\t"+"平均气温");
          System.out.println("------"+"\t"+"------"+"\t"+"------"+"\t"+"------"
          +"\t"+"------"+"\t"+"--------");           
          out(n);              //呼叫函式进行排序前印出
          sort(n);              //呼叫函式进行排序
          System.out.println("排序后");
          System.out.println("时段"+"\t"+"星期一"+"\t"+"星期二"+"\t"+"星期三"+
          "\t"+"星期四"+"\t"+"平均气温");
          System.out.println("------"+"\t"+"------"+"\t"+"------"+"\t"+"------"
          +"\t"+"------"+"\t"+"--------");     
          i1=0;              //重新初使化,为了印出排序过后的平均气温
          out(n);              //呼叫函式进行排序后印出
       }
} 


献花 x0 回到顶端 [5 楼] From:台湾中华电信 | Posted:2006-01-15 16:13 |
ezlovekbm 手机
数位造型
个人文章 个人相簿 个人日记 个人地图
小人物
级别: 小人物 该用户目前不上站
推文 x0 鲜花 x3
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

大大你太厉害了 我是初学者 太深奥都看不太懂 一维我会排序 可是2维我就不懂

像这题是早中晚排序排完变早晚中 如果要横的的排序要如何排序

未排序是               排序后
早18.2,17.3,15.0,13.4,   早13.4,15.0,17.3,18.2
中23.8,25.1,20.6,17.8   中17.8,20.6,23.8,25.1
晚20.6,21.5,18.4,15.7   晚15.7,18.4,20.6,21

这样可以吗 希望大大能指点我一下谢谢


献花 x0 回到顶端 [6 楼] From:APNIC | Posted:2006-01-15 17:26 |
pt730907
数位造型
个人文章 个人相簿 个人日记 个人地图
初露锋芒
级别: 初露锋芒 该用户目前不上站
推文 x26 鲜花 x99
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

请看三楼我PO的程式码....
跑出来的结果正是横的排序的结果....


献花 x0 回到顶端 [7 楼] From:台湾中华电信 | Posted:2006-01-15 20:07 |
ezlovekbm 手机
数位造型
个人文章 个人相簿 个人日记 个人地图
小人物
级别: 小人物 该用户目前不上站
推文 x0 鲜花 x3
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

谢谢大大的不吝啬指点...


献花 x0 回到顶端 [8 楼] From:APNIC | Posted:2006-01-16 08:20 |
ezlovekbm 手机
数位造型
个人文章 个人相簿 个人日记 个人地图
小人物
级别: 小人物 该用户目前不上站
推文 x0 鲜花 x3
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

可以帮我看一下排序那一部分未啥不能排序 谢谢
复制程式
public class E9430068{
 public static void main (String[] args){
       double week [] []={{18.2,17.3,15.0,13.4,0},
                      {23.8,25.1,20.6,17.8,0},
                      {20.6,21.5,18.4,15.7,0}};  //所输入的质,后面之所以会多各0是为了补足AVG/4的不足
       String n[] ={"早上","中午","晚上"};
       
       System.out.println("未排序");
       System.out.println("时段"+"\t"+"星期一"+"\t"+"星期二"+"\t"+"星期三"+"\t"+"星期四"+"\t"+"平均气温");
       System.out.println("------"+"\t"+"------"+"\t"+"------"+"\t"+"------"+"\t"+"------"+"\t"+"--------");
       for(int i=0;i<week.length;i++){
        double avg=0;  //先宣告平均数
        System.out.print(n[i]+"\t");
        for(int j=0;j<week[i].length-1;j++){   //因为前面有字串有补0,所以要减回来
         System.out.print(week[i][j]+"\t");
         avg+=week[i][j];  //宣告平均数的加总        
        }        
        week[i][4]=avg/4;
        System.out.println(week[i][4]);   //avg/ 后面为天数
       }
       for (int k=week.length-1;k>=0;k--)
        {
           for (int l=0;l<k;l++)
           {                         
                if (week[k][l]>week[k][k+1])//当原数值大于后数值时
                {                           //进行交换
                           double temp=week[k][l];
                                  week[k][l] = week[k][l+1];
                                  week[k][l+1] = temp;
                                             
                                }
                     }             
        } 
          
       System.out.println();  //此为空行
       System.out.println("排序后");
       System.out.println("时段"+"\t"+"星期一"+"\t"+"星期二"+"\t"+"星期三"+"\t"+"星期四"+"\t"+"平均气温");
       System.out.println("------"+"\t"+"------"+"\t"+"------"+"\t"+"------"+"\t"+"------"+"\t"+"--------");       
       
       for (int k=0;k<week.length;k++){
       System.out.print(n[k]+"\t");
       for (int l=0;l<week[k].length;l++)        
       System.out.print(week[k][l]+"\t");
       System.out.println();
    }                         
  }
} 


献花 x0 回到顶端 [9 楼] From:APNIC | Posted:2006-01-16 13:49 |

<<   1   2  下页 >>(共 2 页)
首页  发表文章 发表投票 回覆文章
Powered by PHPWind v1.3.6
Copyright © 2003-04 PHPWind
Processed in 0.032048 second(s),query:16 Gzip disabled
本站由 瀛睿律师事务所 担任常年法律顾问 | 免责声明 | 本网站已依台湾网站内容分级规定处理 | 连络我们 | 访客留言