我有一個奇怪的問題:這是訂購數量的數組像這樣特定的陣列排序
[1,1,2,2,3,3,4,4]
這個
[1,2,3,4,1,2,3,4]
的想法智能/最好的辦法就是平衡列表,以便爲列表中的每個元素提供一種優先級。 語言可能是PHP,這並不重要
我有一個奇怪的問題:這是訂購數量的數組像這樣特定的陣列排序
[1,1,2,2,3,3,4,4]
這個
[1,2,3,4,1,2,3,4]
的想法智能/最好的辦法就是平衡列表,以便爲列表中的每個元素提供一種優先級。 語言可能是PHP,這並不重要
可以說我們有[1,1,2,2,2,2,3,3] 取第一組相同的數字,並把它放在單獨的數組中(垂直方向)
1 1
類似地對於第二組人數相等的等
1 1
2 2 2 2
3 3 3
陣列的毗連得到結果
[1,2,3][1,2,3][2,3][2]
這很有趣,並垂直串聯陣列?我能想到的唯一方法就是迭代,或者創建一個矩陣,其長度是數組的最大值,高度是數組的數量。 – 2012-07-26 14:03:59
迭代數組中的每個元素並將其複製到第二個數組中,其中每個元素還包含第二個排序鍵,該排序鍵是序號。
所以,讓我們打電話給你的輸入數組A.
第一:排序
然後:遍歷一個和每個元素複製到一個新的數組B,其中每個元件具有第二排序關鍵字,給他們打電話key1和key2。 Key1是來自A的值,key2是序列號。
A: 1,1,2,2,3,3,4,4
B: (1,1),(1,2),(2,1),(2,2),(3,1),(3,2),(4,1),(4,2)
現在創建該第一訂單上KEY2 B的元素的比較功能,然後在KEY1:
bool isSmallerThan(x, y)
{
if (x.key2 < y.key2) return true;
if (x.key2 > y.key2) return false;
if (x.key1 < y.key1) return true;
return false;
}
現在排序B使用新的比較函數。
迭代B並將所有key1s複製回A.
這個功課是? – 2012-07-26 13:07:27
這是什麼語言? – 2012-07-26 13:09:23
請添加您使用的語言作爲標籤,以便它很容易回答。 – Narendra 2012-07-26 13:25:38