我正在寻找一个数学公式(或逻辑/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,以便可以将它们分配到排序数组中,而无需实际排序,只需派生它们的基数和执行错误检查以避免两次填充元素或留下空白。
这被用来提供关于这些唯一数字在 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 个以上的元素才能以任何准确度来确定该项目的位置,但是在制作副本之前四舍五入结合检查元素是否为空仍然比对整个元素进行排序更快通过比较排列。