我正在寻找一个数学公式(或逻辑/java编程方法,但最好是原始数学),它将采用给定的、唯一的一系列数字并对它们进行线性化。
EG: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,以便可以将它们分配到排序数组中,而无需实际排序,只需派生它们即可基数并执行错误检查以避免重复填充元素或留下空格。
这用于提供关于这些唯一数字在大小为 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 个元素来以任何精确度来确定该项目的位置,但是在进行复制之前结合进行舍入和检查以查看该元素是否为空仍然会比通过比较对整个数组进行排序。
最佳答案
我会研究一种好的线性回归算法。
这里有一些示例的链接,只需将所有权重设置为 1:
或者这里还有更多代码
http://introcs.cs.princeton.edu/java/97data/LinearRegression.java.html
只需将独立值插入为 x,将依赖值插入为 y,瞧!
如果您在将数据解释为线性形式时遇到任何问题,y=mx+b:
关于java - 线性化数值序列的数学方程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13151564/