【发布时间】:2013-11-13 13:46:36
【问题描述】:
基本上我有一个非常大的对象数组,我需要删除 10% 的最不合适的对象。
每个对象都有一个与之关联的适应度变量(一个双精度变量)。我没有一个数字来确定一个对象是否合适,我只想要一堆中最不合适的。
检索(采样)最不合适的对象的最佳方法是什么?
一种方式可以是随机选择让方式 20%,对数据进行排序,然后删除 10%。但我认为这不是一个非常聪明的方法。
另一种方法是始终保持数组排序,然后删除前 10%。但我认为这不是很好,因为您必须在插入/更新时始终对数组进行排序,这是一个很大的开销..
【问题讨论】:
-
你为什么不试试健身订购的Priority Queue?然后只需拨打
remove()直到您清除了 10%? -
谢谢,我不知道优先队列,让我试试
-
@thegrinner 我意识到我不能使用优先队列,因为我需要能够使用它们的索引位置来检索元素。还有其他我可以使用的数据结构吗?