2013-04-09 42 views
1

嗨即時嘗試計算二維數組的頻率。我試圖在例如以某種方式顯示頻率,如果一個表是這樣的:如何計算二維數組的頻率

0:1 2 0

1:2 0 1

2:1 0 2

我想可以算像頻率:

0:0 2 1

1:2 0 1

2:1 1 1

所以表的方式應該是第一列出現了多少次0,第一列出現了多少次1,然後依此類推。

代碼我到目前爲止這是

for (int t = 0; t<s;t++) 
    { 
     int count= 0 ; 
     for (int p = 0; p<s; p++) 
     { 
      if(table[p][t] ==p) 
      { 
       count++ 

      } 
      else if(t+1 != s) 
       continue; 
      else 
       table[p][t] = count; 
       count = 0; 
     } 
    } 

感謝您的幫助

+0

我建議使用HashMap的每列索引與列中的數字的值,該值每增加一個數字出現。 – Simon 2013-04-09 04:43:22

+0

你有什麼問題? – 2013-04-09 04:49:03

+0

我的輸出不正確顯示頻率不正確 – 2013-04-09 04:50:07

回答

0

對於每一列,做出HashMap<int, int>。關鍵是輸入,該值將是該列中的頻率,例如,該列:

1)遍歷該列

2)的列的每一個元素中的元素,如果在HashMap中作爲鍵存在已經,得到其數值,遞增一,並在同一個密鑰下添加新的值。如果尚未添加,請將其添加1

使ArrayList<HashMap<int, int>>爲每列包含其中之一。

您還可以保留一個HashMap<int, int>來統計一個元素出現在全局的次數。這樣,如果要保留每個元素都具有每列的計數的屬性,即使該列的計數爲0,也可以使用此全局函數HashMap來遍歷並在每列中添加鍵還沒有存在。

HashMap是一種數據結構,它允許您將值與每個鍵相關聯,並且您可以像數組一樣添加儘可能多的條目,並且條目不必具有連續整數的鍵。 ArrayList就像一個數組,但您可以添加和刪除它以更改其中包含的元素的數量。

http://docs.oracle.com/javase/6/docs/api/java/util/ArrayList.html

http://docs.oracle.com/javase/6/docs/api/java/util/HashMap.html

+0

是有可能使用計數器? – 2013-04-09 05:04:00

+0

@brian Chiem這是使用計數器,只是你檢查計數器是否存在於hashmap中(是否有一個當前元素的鍵?),如果沒有,在使用它之前創建它。 – Patashu 2013-04-09 05:21:09

0

如果您發佈的例子就是數組總是會像(即唯一可能的值是0,1和2),那麼你可以做一些事情如下 -

int[][] counts = new int[3][3]; //this inits all the elements to 0 
//iterate through all the elements in your source array 
for(int row=0; row<source.length; row++) { 
    for(int col=0; col<source[row].length; col++) {  
     //just increment the appropriate element of the counts array here  
     counts[col][source[row][col]]++; 
    } 
}