比方說,我有一個對象有一個重要的標準,也許還有一些其他的數據。隨機排序的子陣列
class MyObject {
int criteria;
String otherData;
}
我想「洗牌排序」,從而給出的數據X列表,Y是x爲標準和y是otherData,所有的類似X的分組(和排序),但內亞羣,它是洗牌
我給出的目標順序運行,可能給下面的結果
/ 1s first\|/ 2s next \|/ then 3s \
-----------------------------------
1,a 1,b 1,c 2,d 2,e 2,f 3,g 3,h 3,i // other data is in
1,a 1,c 1,b 2,e 2,d 2,f 3,i 3,h 3,g // a random order
1,c 1,a 1,b 2,d 2,f 2,e 3,h 3,i 3,g // within the subgroup
1,b 1,c 1,c 2,e 2,d 2,f 3,g 3,h 3,i
我目前的計劃是建立一個可比較的,只有比較第一準則。然後我的「洗牌排序」可以簡單地
list.shuffle(); // get a random ordering
list.sort(); // now group by criteria, leaving the others in a still random state
我的問題是,這是最有效的方式做到這一點?它會實際達到我的目標嗎?有沒有可能出現的一些模式?如果是這樣,什麼?
比較器不知道未排序的字段。因此,我相當確定,在這裏引入偏見是不可能的。 – olivieradam666
是的,我同意。所有我的意思是,如果你想做一個正式的論證,你需要說(a)這種排序不考慮其他領域,(b)統一排列無偏序隨機洗牌的順序是也是一個無偏見的隨機洗牌。這兩個事實看起來很明顯,但它們確實使論點更加微妙。 – jacobm