作者zupi (冲! 冲!)
看板java
标题Re: [J2SE] 请教把1~6随意排序
时间Sat Sep 1 02:45:59 2007
※ 引述《rosemary (迷迭香)》之铭言:
: ※ 引述《rosemary (迷迭香)》之铭言:
: : 大家好,第一次在此板发表文章,
: : 有不周到之处请大家告诉我 ^^
: : 我想要写一只随意把连续的数字打散的程式,
: : 例如1~6号,执行之後 可能变成 2,5,1,6,4,3
: : 搜寻网路,看到很多很精彩的排序程式,
: : 可是要把排序打散...不知道用什麽java语法可以达成想要的功能呢?
: : 谢谢大家 ^^
: 後来写出来了 ^^ 提供给大家参考
: private static String[] shuffle(String[] team) {
: int teamlength = team.length;
: double[] temp = new double[teamlength];
: double tempd;
: String temps;
: //先产生乱数,分配给每一组
: for(int i=0;i<teamlength;i++){
: temp[i] = Math.random();
: }
: //对乱数排序,顺便就把组顺序调动,
: for(int i=0;i<teamlength;i++) {
: for(int j=teamlength-1;j>i;j--) {
: if(temp[j]<temp[j-1]) {
: tempd = temp[j-1];
: temp[j-1] = temp[j];
: temp[j] = tempd;
: temps = team[j-1];
: team[j-1] = team[j];
: team[j] = temps;
: }
: }
: }
: return team;
: }
: public static void main(String[] args){
: String team[]={"第一组","第二组","第三组","第四组","第五组","第六组"};
: shuffle(team);
: for(String s:team){
: System.out.println(s);
: }
: }
略....
Random rand=new Random();
for (int ii=1, d1=1, d2=(team.length-ii+d1)/d1; d2>0; d2--, ii+=d1) {
int iWhich = (int) ((team.length - ii) * rand.nextDouble() + ii);
String sTmp = team[iWhich - 1];
team[iWhich - 1] = team[ii - 1];
team[ii - 1] = sTmp;
}
return team;
....略
之前在网路上看到的 觉得还不错 参考一下吧
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 59.127.32.76
1F:推 rosemary:感谢 ^^ 09/02 12:09