作者saininniang (sob)
看板PHP
标题[请益] 如何有效率的产生大笔不重覆的阵列值?
时间Thu Dec 21 21:00:57 2006
如何有效率的产生不重覆的阵列值
拿5个bit的值来说明好了
我要产生能像以下规则的阵列
(因为打字的关系,所以[x,x,x,x,x]用xxxxx表示)
step1:01234
step2:01243
step3:01324
step4:01342
step5:01423
step6:01432
step7:02134
step8:02143
...
...
n-1:43201
n :43210
我想产生像上面这样的阵列
------------------------------
我现在的作法是用for回圈硬干
流程就像下面这样
(5bit的话,会用5进制去进位) (n bit则改用 n进制去进位)
00000
00001
00002
00003
00004
00010
00011
00012
00013
00014
00020
...
...
44444
然後再用if()判断取出「不重覆的阵列」
取出像是
01234
02143
....
我这种做法的效率太差
5bit的话,for回圈要跑5^5=3125次
7bit的话,for回圈要跑7^7=82万次
9bit的话,for回圈要跑9^9=3亿次
偏偏我的笔数非常多
程式约要9分钟才跑完
有没有办法更有效率的直接产生像这样子的程式
step1:01234
step2:01243
step3:01324
step4:01342
step5:01423
step6:01432
step7:02134
step8:02143
...
...
n-1:43201
n :43210
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 220.133.142.122
1F:推 chhuang:permutation 12/21 22:36