2012-01-09 52 views
0

我正試圖把每行的最小值和最大值放在一個3個元素大的新數組中。如何打印出min [0] max [0],min [1]和max [1],min [2]和max [2]?從1 dim數組中的2 dim數組的行中存儲MIN和MAX值?

這就是我迄今爲止所做的。 vrsta =行, stolpec =柱,

import java.util.Arrays; 


public class KozarciMarmelade { 


static final int vrsta=3; 
static final int stolpec=10; 
static int [][] t=new int[vrsta][stolpec]; 
static int mini=3; 
static int maxi=3; 
static int [] mintab=new int [3]; 
static int [] maxtab=new int [3]; 
public static void main(String[] args) { 



    zapolniTabelo(); 
    izpisiTabelo(t); 
    findMax(t); 
    findMin(t); 


} 

public static void zapolniTabelo() {  

    for(int i=0;i<vrsta;i++){ 
     for(int j=0;j<stolpec;j++){ 
      t[i][j]=(int)(Math.random()*60+670); 

     } 
    } 



} 

public static void izpisiTabelo(int [][] t) { 
    for(int k=0;k<t.length;k++){ 
     System.out.print((k+1)+".izmena: "); 
     for(int l=0;l<t[k].length;l++){ 


      System.out.print(t[k][l] +" "); 
     } 
     System.out.println(); 
    } 

} 
public static void findMax(int [][] t){ 



    for(int i=0;i<t.length;i++){ 
     maxi=t[i][0]; 
     for(int j=1;j<t[i].length;j++){ 
      if(maxi<t[i][j]) 
       maxi=t[i][j]; 


     } 
     System.out.println("The largerst element in row "+ (i+1)+": "+maxi); 

    } 
} 
public static void findMin(int [][] t){ 

    for(int i=0;i<t.length;i++){ 
     mini=t[i][0]; 
     for(int j=0;j<t[i].length;j++){ 
      if(mini>t[i][j]) 
       mini=t[i][j]; 
     } 
     System.out.println("Te smallest ellement in a row "+(i+1)+": "+mini); 
    } 

    } 
} 
+1

這感覺就像一個作業問題。你試過什麼了? – 2012-01-09 16:00:31

+0

http://mattgemmell.com/2008/12/08/what-have-you-tried/ – jbranchaud 2012-01-09 16:00:43

+0

如果它的作業添加了作業標籤。 – 2012-01-09 16:03:04

回答

1

對於每一行做一些如下:

Arrays.sort(array); 

min = array[0]; 
max = array[array.length-1]; 
+0

這就是O(n log n)。它可以在O(n)中完成。 – 2012-01-09 16:15:53

0

將它們存儲在2個數組:

int[] mins=new int[matrix.length],maxs=new int[matrix.length]; 
for(each row in matrix) 
{ 
    min[index of this row]=Integer.MAX_VALUE; 
    max[index of this row]=Integer.MIN_VALUE; 
    for(int i:row){ 
     if(i<min[index]) min[index]=i; 
     if(i>max[index]) max[index]=i; 
    } 
}