[理工] 資結 permutation的時間複雜度

看板Grad-ProbAsk作者 (chiu)時間6年前 (2017/10/15 10:28), 編輯推噓2(206)
留言8則, 3人參與, 6年前最新討論串1/1
https://i.imgur.com/I9pv4MU.jpg
做如圖的permutation程式的時間複雜度是O(n*n!) 這是怎麼算出來的? O(n*n!)中的n是因為總共會進入第一個if n次嗎? 那n!是怎麼來的? 謝謝大家解答~~ -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 27.247.33.144 ※ 文章網址: https://www.ptt.cc/bbs/Grad-ProbAsk/M.1508034504.A.FD8.html

10/15 10:53, 6年前 , 1F
n! 是因為有 n! 個輸出, n 是因為每次輸出有 n 字元
10/15 10:53, 1F

10/15 10:53, 6年前 , 2F
而且每個輸出都可以在 O(n) 的時間內找出來
10/15 10:53, 2F

10/15 11:21, 6年前 , 3F
那我是不是寫錯了?應該是總共會進入第一個if n!次?><
10/15 11:21, 3F

10/15 11:23, 6年前 , 4F
每個輸出都可以在 O(n) 的時間內找出來是因為else中的迴
10/15 11:23, 4F

10/15 11:23, 6年前 , 5F
圈嗎?
10/15 11:23, 5F

10/15 11:29, 6年前 , 6F
沒寫錯,進入第一個迴圈的話就只是print表格,頂多是O(n)
10/15 11:29, 6F

10/15 11:32, 6年前 , 7F
O(n!)的部份是for中呼叫perm的次數
10/15 11:32, 7F

10/15 19:41, 6年前 , 8F
了解~感謝大家
10/15 19:41, 8F
文章代碼(AID): #1PuiV8_O (Grad-ProbAsk)