配色では、色相を並べ替えたいと思いますが、「大きなギャップ」を避けたい、つまり(0 ~ 360 度の値として表現された場合) 優先します350,354,2,10,15
。2,10,15,350,354
それを行うための最良のアプローチは何ですか(たとえばphpで)?それは「最大のギャップ」を見つけて、その後に開始することですか? より良いアイデアはありますか?
2 に答える
0
最大のギャップを見つけて、最初に入れます。
- 配列をソートする
- 最大のギャップを見つける (配列をループして、2 つの隣接間の最大距離を見つける)
- ギャップを先頭に移動します (すべての数字をシフトする別のループ)
于 2011-04-02T15:32:55.443 に答える
0
それほど多くない場合:
- 順番に並べるだけ
- 分散を見つける (モジュロ 360) (つまり、「モジュロ 360 平均」からどれだけ離れているか)
- 最初を最後に移動し、分散を再度確認します。
- それらをすべて試した後、最も小さいものを選択してください。
このアルゴリズムのリストのサイズは O(N^2) です。
主なポイントは、ここでは N 'rotations' しかないということです。「ギャップ」統計を決定し、それを N 回の回転すべてにわたって総当りし、「ギャップ」を最小化する配置を使用します。
于 2011-04-02T15:24:14.667 に答える