用java做了一个数组乱序,首先建立快速排序算法,排序的依据是根据序列中随机产生的序列号,序列号利用map保证在每次排序过程中只产生一次,不知道有没有效率更高的方法,大家咚咚脑筋哈
public static void randomList(List list) {
Collections.sort(list, new Comparator(){
HashMap map = new HashMap();
public int compare(Object v1, Object v2) {
init(v1);
init(v2);
double n1 = ((Double)map.get(v1)).doubleValue();
double n2 = ((Double)map.get(v2)).doubleValue();
if(n1 > n2)
return 1;
else if(n1 < n2)
return -1;
return 0;
}
private void init(Object v){
if(map.get(v) == null){
map.put(v, new Double(Math.random()));
}
}
protected void finalize() throws Throwable {
map = null;
}
});
}
@2008 杨一. 版权所有. 保留所有权利