RSS   



  可打印版本 | 推薦給朋友 | 訂閱主題 | 收藏主題 | 純文字版  


 


 
主題: [其他] [求助]二維陣列的排序   字型大小:||| 
Dr.J
銅驢友〔初級〕
等級: 8等級: 8


今日心情

 . 積分: 129
 . 文章: 813
 . 收花: 908 支
 . 送花: 294 支
 . 比例: 0.32
 . 在線: 2040 小時
 . 瀏覽: 1070 頁
 . 註冊: 8207
 . 失蹤: 2706
#1 : 2011-5-28 08:55 AM     只看本作者 引言回覆

想跟各位大大請教一下
小弟有個二維陣列的資料

種類  幣别   金額
交通  NTD  100
伙食  NTD  200
雜費  RMB  100
住宿  USD  300
伙食  RMB  400
雜費  RMB  200
.
.
種類總共有4種,幣別種共有3種
我要轉成
=========================
交通  金額   伙食   金額  雜費   金額   住宿   金額
NTD  100   NTD  200
                 RMB  400  RMB  100
                                  RMB  200
                                                    USD  300
==========================
上面的資料要把四個項目都分出來,並且每一行的幣別必須一致,不然就新增一行

請問這個有沒有比較好的方法可以處理呢Orz,如果是資料庫的話應該可以用Group by處理,但是這種二維陣列突然一時之間想不到辦法

小的資質愚頓,想請問各位大大有沒有什麼好方法,先謝謝了m(_ _)m

[Dr.J 在  2011-5-28 08:59 AM 作了最後編輯]



[如果你喜歡本文章,就按本文章之鮮花~送花給作者吧,你的支持就是別人的動力來源]
本文連接  
檢閱個人資料  發私人訊息  Blog  快速回覆 新增/修改 爬文標記
Ralse
金驢友〔中級〕
等級: 17等級: 17等級: 17等級: 17等級: 17


十週年紀念徽章(六級)  

今日心情

 . 積分: 2200
 . 文章: 3900
 . 收花: 19823 支
 . 送花: 34430 支
 . 比例: 1.74
 . 在線: 4349 小時
 . 瀏覽: 39325 頁
 . 註冊: 7440
 . 失蹤: 3
#2 : 2011-5-28 10:40 AM     只看本作者 引言回覆

我用MySQL居多,所以二維陣列頂多只知道流程

是我的話大概會先把NTD RMB USD三個先用case搭配forloop存成另外三個陣列
然後對每個陣列的種類再做成獨立的陣列
之後從這些獨立的陣列用forloop每三個做一次輸出這樣

第二種方法是先將整個二維陣列針對幣別做泡泡排序
然後記下哪幾個array value是NTD RMB USD三個變換的地方
之後就用for loop搭配case條件去一比一比比較然後整理成想要的表格
最後一口氣輸出這樣

我覺得用mysql很快就能解決的問題,用其他語言真的要寫好多code @@



[如果你喜歡本文章,就按本文章之鮮花~送花給作者吧,你的支持就是別人的動力來源]
本文連接  
檢閱個人資料  發私人訊息  Blog  快速回覆 新增/修改 爬文標記
Dr.J
銅驢友〔初級〕
等級: 8等級: 8


今日心情

 . 積分: 129
 . 文章: 813
 . 收花: 908 支
 . 送花: 294 支
 . 比例: 0.32
 . 在線: 2040 小時
 . 瀏覽: 1070 頁
 . 註冊: 8207
 . 失蹤: 2706
#3 : 2011-5-28 10:52 AM     只看本作者 引言回覆

對呀,用sql明明就很好做Orz,不過用程式碼來寫我突然想不到啥方法
本來想弄個12個陣列出來的說

程式是要用Java寫的,是不是有什麼集合可以拿來做呢@@?

[Dr.J 在  2011-5-28 10:58 AM 作了最後編輯]



[如果你喜歡本文章,就按本文章之鮮花~送花給作者吧,你的支持就是別人的動力來源]
本文連接  
檢閱個人資料  發私人訊息  Blog  快速回覆 新增/修改 爬文標記
siva
銀驢友〔高級〕
等級: 14等級: 14等級: 14等級: 14


 . 積分: 1087
 . 精華: 7
 . 文章: 458
 . 收花: 8961 支
 . 送花: 4916 支
 . 比例: 0.55
 . 在線: 1991 小時
 . 瀏覽: 21480 頁
 . 註冊: 7257
 . 失蹤: 915
#4 : 2011-5-28 11:26 AM     只看本作者 引言回覆


引用:
Dr.J寫到:
對呀,用sql明明就很好做Orz,不過用程式碼來寫我突然想不到啥方法
本來想弄個12個陣列出來的說

程式是要用Java寫的,是不是有什麼集合可以拿來做呢@@?

[Dr.J 在  2011-5-28 10:58 AM 作了最後編輯]


寫成 java 二維排序大致如下:
(依幣別, 金額排序)

資料陣列.sort(  
   function(x, y){
   return 幣別x == 幣別y ? 金額x - 金額y : 幣別x - 幣別y
  }
);

三維寫法一樣.   
資料陣列.sort(  
   function(x, y){
   return 1維x == 1維y ? (2維x == 2維y ? 3維x - 3維y : 2維x - 2維y ) : 1維x - 1維y
  }
);

要幾維都可以. 一直代進去就 OK 了



[如果你喜歡本文章,就按本文章之鮮花~送花給作者吧,你的支持就是別人的動力來源]
本文連接  
檢閱個人資料  訪問主頁  發私人訊息  Blog  快速回覆 新增/修改 爬文標記
陽だまり
白銀驢友
等級: 15等級: 15等級: 15等級: 15等級: 15
ささらの可愛さは異常

 . 積分: 1330
 . 精華: 1
 . 文章: 3159
 . 收花: 10387 支
 . 送花: 26639 支
 . 比例: 2.56
 . 在線: 4508 小時
 . 瀏覽: 30308 頁
 . 註冊: 7436
 . 失蹤: 1444
 . 星の彼方
#5 : 2011-5-28 04:02 PM     只看本作者 引言回覆


引用:
Dr.J寫到:
想跟各位大大請教一下
小弟有個二維陣列的資料

種類  幣别   金額
交通  NTD  100
伙食  NTD  200
雜費  RMB  100
住宿  USD  300
伙食  RMB  400
雜費  RMB  200
.
.
種類總共有4種,幣別種共有3種
我要轉成
=========================
交通  金額   伙食   金額  雜費   金額   住宿   金額
NTD  100   NTD  200
                 RMB  400  RMB  100
                                  RMB  200
                                                    USD  300
==========================

不好意思請問一下
為什麼結果要是
=========================
交通  金額   伙食   金額  雜費   金額   住宿   金額
NTD  100   NTD  200
                 RMB  400  RMB  100
                                  RMB  200
                                                    USD  300
==========================

像底下這樣不行嗎
=========================
交通  金額   伙食   金額  雜費   金額   住宿   金額
NTD  100   NTD  200
                 RMB  400  RMB  100
                                                    USD  300
                                  RMB  200
==========================



[如果你喜歡本文章,就按本文章之鮮花~送花給作者吧,你的支持就是別人的動力來源]
本文連接  
檢閱個人資料  訪問主頁  發私人訊息  Blog  快速回覆 新增/修改 爬文標記
Dr.J
銅驢友〔初級〕
等級: 8等級: 8


今日心情

 . 積分: 129
 . 文章: 813
 . 收花: 908 支
 . 送花: 294 支
 . 比例: 0.32
 . 在線: 2040 小時
 . 瀏覽: 1070 頁
 . 註冊: 8207
 . 失蹤: 2706
#6 : 2011-5-28 09:10 PM     只看本作者 引言回覆

這樣也ok的,只要能分開就好了^^

懇請大大似教m(_ _)m


引用:
陽だまり寫到:

引用:
Dr.J寫到:
想跟各位大大請教一下
小弟有個二維陣列的資料

種類  幣别   金額
交通  NTD  100
伙食  NTD  200
雜費  RMB  100
住宿  USD  300
伙食  RMB  400
雜費  RMB  200
.
.
種類總共有4種,幣別種共有3種
我要轉成
=========================
交通  金額   伙食   金額  雜費   金額   住宿   金額
NTD  100   NTD  200
                 RMB  400  RMB  100
                                  RMB  200
                                                    USD  300
==========================

不好意思請問一下
為什麼結果要是
=========================
交通  金額   伙食   金額  雜費   金額   住宿   金額
NTD  100   NTD  200
                 RMB  400  RMB  100
                                  RMB  200
                                                    USD  300
==========================

像底下這樣不行嗎
=========================
交通  金額   伙食   金額  雜費   金額   住宿   金額
NTD  100   NTD  200
                 RMB  400  RMB  100
                                                    USD  300
                                  RMB  200
==========================



[如果你喜歡本文章,就按本文章之鮮花~送花給作者吧,你的支持就是別人的動力來源]
本文連接  
檢閱個人資料  發私人訊息  Blog  快速回覆 新增/修改 爬文標記
Dr.J
銅驢友〔初級〕
等級: 8等級: 8


今日心情

 . 積分: 129
 . 文章: 813
 . 收花: 908 支
 . 送花: 294 支
 . 比例: 0.32
 . 在線: 2040 小時
 . 瀏覽: 1070 頁
 . 註冊: 8207
 . 失蹤: 2706
#7 : 2011-5-28 11:28 PM     只看本作者 引言回覆

大大,請問一下,如果我要照種類跟幣別分類的話?  金額可以不用理他Orz
最主要是要種類跟幣別分開@@



引用:
siva寫到:

引用:
Dr.J寫到:
對呀,用sql明明就很好做Orz,不過用程式碼來寫我突然想不到啥方法
本來想弄個12個陣列出來的說

程式是要用Java寫的,是不是有什麼集合可以拿來做呢@@?

[Dr.J 在  2011-5-28 10:58 AM 作了最後編輯]


寫成 java 二維排序大致如下:
(依幣別, 金額排序)

資料陣列.sort(  
   function(x, y){
   return 幣別x == 幣別y ? 金額x - 金額y : 幣別x - 幣別y
  }
);

三維寫法一樣.   
資料陣列.sort(  
   function(x, y){
   return 1維x == 1維y ? (2維x == 2維y ? 3維x - 3維y : 2維x - 2維y ) : 1維x - 1維y
  }
);

要幾維都可以. 一直代進去就 OK 了



[如果你喜歡本文章,就按本文章之鮮花~送花給作者吧,你的支持就是別人的動力來源]
本文連接  
檢閱個人資料  發私人訊息  Blog  快速回覆 新增/修改 爬文標記
siva
銀驢友〔高級〕
等級: 14等級: 14等級: 14等級: 14


 . 積分: 1087
 . 精華: 7
 . 文章: 458
 . 收花: 8961 支
 . 送花: 4916 支
 . 比例: 0.55
 . 在線: 1991 小時
 . 瀏覽: 21480 頁
 . 註冊: 7257
 . 失蹤: 915
#8 : 2011-5-28 11:39 PM     只看本作者 引言回覆


引用:
Dr.J寫到:
大大,請問一下,如果我要照種類跟幣別分類的話?  金額可以不用理他Orz
最主要是要種類跟幣別分開@@





上面寫了呀? . 用三維排序就 OK 了呀...

var 資料陣列[ 總項數 ]  = new Array(2);

ArrayData[ 0 ][0]  =  "交通 ";
ArrayData[ 0 ][1]  =  "NTD ";
ArrayData[ 0 ][2]  =  100;
.....
....
....


// 三維排序 ( 種類  幣别   金額 )
ArrayData.sort(  
   function(x, y){
   return x[0] == y[0] ? (x[1] == y[1] ? x[1] - y[1] : x[2] - y[2] ) : x[0] - y[0]
  }
);

很久沒寫 java 了. 忘了字串可不可以直接減法比較. 不行就自己改成字串比較式.

不要金額的話. 就自己代入前面寫二維排序就好了



[如果你喜歡本文章,就按本文章之鮮花~送花給作者吧,你的支持就是別人的動力來源]
本文連接  
檢閱個人資料  訪問主頁  發私人訊息  Blog  快速回覆 新增/修改 爬文標記
Dr.J
銅驢友〔初級〕
等級: 8等級: 8


今日心情

 . 積分: 129
 . 文章: 813
 . 收花: 908 支
 . 送花: 294 支
 . 比例: 0.32
 . 在線: 2040 小時
 . 瀏覽: 1070 頁
 . 註冊: 8207
 . 失蹤: 2706
#9 : 2011-5-30 08:39 PM     只看本作者 引言回覆

感謝各位的回覆,不過還是沒有辦法比較有效的把他整個拆出來,只好放棄了Orz


[如果你喜歡本文章,就按本文章之鮮花~送花給作者吧,你的支持就是別人的動力來源]
本文連接  
檢閱個人資料  發私人訊息  Blog  快速回覆 新增/修改 爬文標記

   

快速回覆
表情符號

更多 Smilies

字型大小 : |||      [完成後可按 Ctrl+Enter 發佈]        

溫馨提示:本區開放遊客瀏覽。
選項:
關閉 URL 識別    關閉 表情符號    關閉 Discuz! 代碼    使用個人簽名    接收新回覆信件通知
發表時自動複製內容   [立即複製] (IE only)


 



所在時區為 GMT+8, 現在時間是 2024-11-22 01:43 AM
清除 Cookies - 連絡我們 - TWed2k © 2001-2046 - 純文字版 - 說明
Discuz! 0.1 | Processed in 0.035973 second(s), 8 queries , Qzip disabled