「k 個のソート済み」リスト (各要素が正しいソート済み位置から最大 k 個の位置にあるリスト) を単一の完全にソート済みのリストにマージする関数をテストするためのテスト データを生成したいと考えています。私は機能するアプローチを持っていますが、それがどの程度ランダム化されているかはわかりません。これを行うには、よりシンプルでエレガントな方法があるはずです。私の現在のアプローチ:
- 整数インデックスとペアになった n 個のランダム要素を生成します。
- ランダムな要素を並べ替えます。
- 各要素のペアのインデックスをソートされた位置に設定します。
- 要素を逆方向に処理し、各要素を、リスト内の 1 ~ k 位置のランダムな距離の要素と交換します。ペアのインデックスが現在のインデックスである場合にのみ、ターゲット要素と交換します (これにより、既に場違いな要素を交換し、あるべき場所から k 位置よりも遠くに移動することを回避できます)。
- 摂動要素を別のリストにコピーします。
私が言うように、これは機能しますが、代替/より良いアプローチに興味があります。