[請益] 如何有效率的產生大筆不重覆的陣列值?
如何有效率的產生不重覆的陣列值
拿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
推
12/21 22:36, , 1F
12/21 22:36, 1F
討論串 (同標題文章)
以下文章回應了本文:
完整討論串 (本文為第 1 之 3 篇):
PHP 近期熱門文章
PTT數位生活區 即時熱門文章
4
20
6
17