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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 杨道红 中级黑马   /  2013-12-21 16:30  /  2387 人查看  /  11 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 杨道红 于 2013-12-21 20:30 编辑

public class Min1 {
        public static void main(String[] args){
                int[][] arr = {{3,4,6,9,2},{12,3,6,4,5},{9,5,3,7},{7,3,1,5}};//定义一个二维数组
                int x=0;
                int y=0;//初始化操作,xy为下标
                for(int i = 0 ; i < arr.length; i++){        //一个for循环,获取每行的最小值
                        int min1=getMin(arr);        //将每行的最小值赋给min1;
                        if(arr[x][y]>arr[min1])        //如果每行的最小值比初始化的最小值还小,就交换
                        {
                                change(x,i);
                                change(y,min1);
                        }
                }
                System.out.println(x+""+y);
                System.out.println("最小元素为:"+arr[x][y]);
        }
        public static int getMin( int[] arr){
                int min=0;
                for(int i = 1 ; i < arr.length; i++){
                        if(arr<arr[min]){
                                change(i,min);
                        }
                }
                return min;
        }
        public static void change(int a ,int b){
                int temp = a;
                a = b;
                b = temp;
        }
}
哪里问题?

评分

参与人数 1技术分 +1 收起 理由
乔兵 + 1

查看全部评分

11 个回复

倒序浏览
  1. public class Demo {
  2.         public static void main(String[] args) {
  3.                   int[][] arr = {{3,4,6,9,2},{12,3,6,4,5},{9,5,3,7},{7,3,1,5},{22}};
  4.                 int temp = arr[0][0];
  5.                 for(int i=0;i<arr.length;i++){
  6.                         for(int j=0;j<arr[i].length;j++){
  7.                                 //System.out.print(arr[i][j]+" ");//输出a[i][]的所有数字
  8.                                 if(temp>arr[i][j]){
  9.                                         temp = arr[i][j];
  10.                                 }
  11.                         }
  12.                         //System.out.println();
  13.                 }
  14.                
  15.                 System.out.println("最小数为:"+temp);
  16.         }
  17. }
复制代码


你看看这种方法把,其实你只要会输出二维数组,就能得到其最小值;

评分

参与人数 1技术分 +1 收起 理由
乔兵 + 1

查看全部评分

回复 使用道具 举报
下面是我写的比较二维数组的代码,希望对你有帮助:
  1. public static void main(String[] args) {
  2.                 // TODO Auto-generated method stub
  3.                   int[][] arr = {{3,4,6,9,2},{12,3,6,4,5},{9,5,3,7},{7,3,3,5}};
  4.                   System.out.println(getMin(arr));
  5.         }
  6.         public static int getMin(int[][] arr)
  7.         {
  8.                 int [] chs=new int[arr.length];;
  9.                 int m=0;
  10.                 for(int i=0;i<arr.length;i++)
  11.                 {
  12.                         int min1=arr[i][0];
  13.                         for(int j=1;j<arr[i].length;j++)
  14.                         {
  15.                                  if(arr[i][j]<min1)
  16.                                  {
  17.                                          int temp=arr[i][j];
  18.                                          arr[i][j]=min1;
  19.                                          min1=temp;
  20.                                  }
  21.                         }
  22.                         chs[m++]=min1;
  23.                 }
  24.                 int min2=chs[0];
  25.                 for(int n=1;n<chs.length;n++)
  26.                 {
  27.                        
  28.                          if(chs[n]<min2)
  29.                          {
  30.                                  int temp2=chs[n];
  31.                                  chs[n]=min2;
  32.                                  min2=temp2;
  33.                          }
  34.                 }
  35.                 return min2;
  36.         }

  37. }
复制代码

点评

版主的代码精炼通俗,咱赞一个! 想问下版主,后面定义的m的作用是什么,一定要这样定义吗?表示不是很理解,默等回复。。。  发表于 2014-3-3 13:42

评分

参与人数 1技术分 +1 收起 理由
乔兵 + 1

查看全部评分

回复 使用道具 举报 1 0
代文娟 发表于 2013-12-21 17:26
下面是我写的比较二维数组的代码,希望对你有帮助:

我那代码就是最后定义的方法不对,我注释了一下,结果就对了
回复 使用道具 举报
杨道红 发表于 2013-12-21 17:42
我那代码就是最后定义的方法不对,我注释了一下,结果就对了

其实你只是找二位数组的最小元素,只查找就可以,看你的代码里还有数据交换,这样没必要,效率不高
回复 使用道具 举报
刘松703 发表于 2013-12-21 18:41
其实你只是找二位数组的最小元素,只查找就可以,看你的代码里还有数据交换,这样没必要,效率不高 ...

查找不要比较么?比较完不要交换?我想交换的是下标~
回复 使用道具 举报
杨道红 发表于 2013-12-21 19:26
查找不要比较么?比较完不要交换?我想交换的是下标~

又不是排序,只是找到最小元素就可以,交换干嘛?
回复 使用道具 举报
刘松703 发表于 2013-12-21 20:05
又不是排序,只是找到最小元素就可以,交换干嘛?

o,明白了,谢谢
回复 使用道具 举报
你这样太麻烦了,我感觉用冒泡排序法不更简单
回复 使用道具 举报
次长风 发表于 2013-12-22 19:46
你这样太麻烦了,我感觉用冒泡排序法不更简单

好吧,那你整一份代码给我借鉴一下哈。谢谢
回复 使用道具 举报
我觉得是你方法定义错了!
    public static int getMin( int[] arr){//传进来的数组格式应该是arr[] a[].
                int min=0;
                for(int i = 1 ; i < arr.length; i++){
                        if(arr<arr[min]){//这里我就完全看不懂了! arr是一个数组吧,现在被你定义成值了,
                                             //  arr[0]=={3,4,6,9,2}.
                                change(i,min);//我这里被搞晕了,呵呵,只会指出错误,我也还在学习!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马