
私は数学言語と数式のスキルが不十分なので、C89でコーディングした3つの異なるアルゴリズムを印刷しています。
- Johnson-Trotterアルゴリズム
- Naryanaアルゴリズム
- Mrrl (A. Astrelin)によって開発された、このhabrpostから取られたアルゴリズム
上記のすべてのアルゴリズムは再帰的ではありません。
私のバージョンのJohnson-Trotterアルゴリズムは最高ではないと思います。 それでも、私は急いでn = 10の場合の結果を示します。
コンソール出力付きの時間(printfを意味します)
実1m19.410s
ユーザー0m31.899s
sys 0m36.253s
コンソール出力なしの時間
実際の0m2.241s
ユーザー0m2.236s
sys 0m0.004s
Mrrlコードの私のバージョン
コンソール出力付き
実1m11.565s
ユーザー0m27.429s
sys 0m32.997s
コンソール出力なし
実数0m0.489s
ユーザー0m0.486s
sys 0m0.002s
最後のNaryanaのようなアルゴリズムはそのような結果を与えます
コンソール出力付き
実際の1分10秒223
ユーザー0m8.617s
sys 0m38.165s
コンソール出力なし
実際の0m0.453s
ユーザー0m0.449s
sys 0m0.004s
読んでくれてありがとう。 このサイトをスペルチェックに使用しました。 もちろん、あなたは私に尋ねる絶対的な権利を持っています。 現時点では、どのアルゴリズム( パニックにならないでください!この単語は通常のエスペラント語です!)について簡単な答えを出すことはできません。 可能であれば、これら3つのコードスクリプトを調整し、さまざまな状況でテストする必要があるかもしれません。 最初と3番目のアルゴリズムは、疑似コード(説明を主に読んでいます)をざっと見てからコーディングされました。 2番目のアルゴリズムは、私が間違っていない場合、Habrahabrで以前に公開されたアルゴリズムの厳密なバージョンです。