2016-12-30 4 views

答えて

0

はい、prelude/array.satsで宣言された関数array_permuteに基づいて、prelude/list_vt.satsで宣言された関数があります。

list_vt_permuteは乱数を生成するためにlist_vt_permute$randintを呼び出し、本質的にランダムシャッフリングを実行するFisher-Yatesアルゴリズムを実装することに注意してください。関数list_vt_permuteはO(n)時間であり、一時的な使用のためにメモリを割り当てる必要があります。

malloc/freeを必要としないlist_vt_permuteのバージョンについては、完了までにO(n * log(n))時間かかるmergesortのように実装できます。

関連する問題