一意の乱数を含む配列があるとしましょう (数値の範囲は 0 から 20 までと小さい)。例えば:
[6, 3, 11, 9, 4, 5]
次の配列を次のようなものに変換するにはどうすればよいですか:
[3, 0, 5, 4, 1, 2]
2 番目の配列は 0 から始まり、(array.Length-1) で終わりますが、配置は最初の配列の大きさを基準にしています。
これを C/C++/C# で効率的に実装するにはどうすればよいですか? (方法にもっと興味があります)
ほんの一例を挙げました。それは本当に何でもかまいません:
[7, 10, 0, 19, 50, 33, 45, 100]
[1, 2, 0, 3, 6, 4, 5, 7]
配列 A の最小の数値は、配列 B では 0 です。配列 A の最大の数値は、配列 B では (array.Length-1) です。配列 A は完全にランダムにすることができます (ただし、2 つ以上の同一の数値が含まれることはありません)。配列 A と同じ順序で 0 から array.Length-1) までのすべての数値を含める必要があります。