我正在尝试对一组数据进行排序,使其看起来像概率分布函数的直方图(我暂时假设服从正态分布)。
我有一个条目列表:
private static final class SortableDatasetEntry{
Number value;
Comparable key;
public SortableDatasetEntry(Number value, Comparable key){
this.value = value;
this.key = key;
}
}
一个例子:
我有这些项目:{1,2,3,4,5,6,7,8,9}
编辑:
我想要的排序列表:{1,3,5,7,9,8,6,4,2}
(或类似的东西)数字不会总是那么整齐(即简单排序奇数/偶数也不起作用)。我有一个部分解决方案,涉及按常规顺序(从低到高)排序,然后通过每次插入中间将该列表复制到另一个列表,因此最后插入的项目(到中间)是最大的。我仍然想找到一种使用比较器执行此操作的方法。
这非常棘手,因为它不是按 value
的绝对值排序,而是按集合中与 Mean(value
) 的距离排序,并且然后以某种方式移动,使那些最接近均值的值居中。我知道 compareTo 函数必须是“可逆的”(我忘记了正确的术语)。
加分项:如何确定数据的正确分布(即,如果它不是正常的,如假设的那样)。
最佳答案
首先计算均值并将其存储在名为 say mean
的变量中。接下来,当您将条目插入 SortableDatasetEntry 时,使用 value - mean
作为每个条目的实际值而不是 value
。
关于java - Java中从最小到最大的排序列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29852044/