重念一次早該補起來的「資料結構與演算法」。這篇筆記下 Permutation in General 普遍性排列。
課程相關資訊
[連結]:https://hiskio.com/courses/572/lectures/29986
本篇範圍:Chapter 12
請注意:本系列文章為個人對應課程的消化吸收後,所整理出來的內容。換言之,並不一定會包含全部的課程內容,也有可能會添加其他資源來說明。
內容
在先前一篇所提及的方法,僅能處理最多三個排序。若要加入更多的,就得衍生更多的巢狀結構。
想法
以 ABC 為例
- 1. 用兩個指標,start 和 i,預設都在 A 的位置
2. 當 start 固定在 A 的位置,接著 i 從 A 的位置依序移到 C,並將 start 和 i 的位置上的值做互換
3. 完成後,把 start 的值 + 1 ,用遞迴的方式再執行一次。不過每一次遞迴結束後,要記得把原先互換的值要再換回來,以確保一開始的預設值是不變的