java - Java中从最小到最大的排序列表

标签 java algorithm sorting probability-density

我正在尝试对一组数据进行排序,使其看起来像概率分布函数的直方图(我暂时假设服从正态分布)。

我有一个条目列表:

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/

相关文章:

java - 如何在获取Android后对List<Model>数据进行排序

c++ - 对没有比较器或 lambda 函数的 vector 进行排序?

java - While 循环不会停止运行

java - 数组适配器未在 onDataChange() 方法中更新

PHP 5.5 password_* 函数重新散列

asp.net - 如何为此 RC4 算法创建解密函数

string - 使用 trie 进行字符串分割 - 时间复杂度?

python - 根据另一个字符串列表对字符串列表进行排序

mysql - 更改 MySQL 磁盘上的数据组织

java - SPOJ解决方案提交