特定の一意の一連の数値を取り、それらを線形化する数式(または論理/ Javaプログラムメソッド、しかしできれば生の数学)を探しています。
例: 1,2,4,7,10 ==> 0,1,2,3,4
.
- 線形化された順序は、元の値と同じ関連付けを持つ同じ例の数値を使用するように、最小から最大までを表す必要があり
{0=1,1=2,2=4,3=7,4=10}, 10,2,7,4,1 ==> 4,1,3,2,0
ます。 - 数値は範囲内の定数から範囲
[n,m]
になり、c
数値があります。 n
およびm
0 を超える任意の正の数を指定できますが、m>n
. とm-n != c
。
これはJavaで使用され、コンストラクターに関連付けられた一意のIDの文字列を取得し、それらを0、1、2、3、4に並べ替えて、実際にソートせずにベース番号を導出するだけでソート済み配列に割り当てることができますエラー チェックを実行して、要素を 2 回埋めたり、空白を残したりしないようにします。
これは、 size の配列内のこれらの一意の数値の位置に関する「最良の推測」を提供するために使用されていますn
。これを行うことで、実際に配列を複数回通過する必要がないため、処理時間がほんのわずかで済む、より堅牢な並べ替えアルゴリズムを実現したいと考えています (最大値と最小値は、配列が最初に入力されたときに決定されます)。
リクエストにより、追加の入出力:
int n=1350,m=1500,c=5;
/**
* Note that the items in output are the results,
*respective to element, of the mathematical
*function applied against the elements of input.
**/
int[] input = {1350,1500,1365,1450,1490};
...some f(input[x]) happens here...
int[] output= {0 ,4 ,1 ,2 ,3 };
当然のことながら、アイテムがどこにあるかを正確に判断するには、実質的に5つ以上の要素が必要になることを理解していますが、コピーを作成する前に要素がnullかどうかを確認するためのチェックと組み合わせて丸めることは、全体をソートするよりも高速です比較による配列。