gpt4 book ai didi

java - Java中内置的比较排序

转载 作者:行者123 更新时间:2023-12-02 08:26:32 25 4
gpt4 key购买 nike

假设我想对项目 1 到 10 进行排序,以便在排序后随机选择,选择的概率与每个数字的权重相关(即 1 的权重 = 10、2 的 = 30、4 的 = 15、5 的 = 35、6 的 = 10,其余0);假设我之前已经计算了权重的总和。现在,我首先必须根据数字的权重对数字进行排序,然后再次浏览列表,将每个数字除以所有数字的总和(即进行标准化以使每个数字的权重在 [0,1] 范围内)。排序然后遍历列表很慢,因此我尝试将权重放入 compareTo() 方法中,以便在排序时标准化,但 Collections.sort() 不会将它们按正确的顺序排列如果我这样做。有什么建议(除了必须从头开始编写我自己的高效排序算法)?我希望我说得足够清楚。

最佳答案

假设ints是一个List:

Collections.sort(ints, new Comparator<Integer> () {
private int getWeight(Integer i) {
int weight = 0;
switch(i) {
case 1:
case 6: weight = 10; break;
case 2: weight = 30; break;
case 4: weight = 15; break;
case 5: weight = 35; break;
}
return weight;
}

public int compare(Integer i1, Integer i2) {
int w1 = getWeight(i1);
int w2 = getWeight(i2);
return (w1>w2)?1:(w1==w2?0:-1);
}});

for(int i:ints) {
System.out.print(i+",");
}

您可以使用枚举或 HashMap 来存储数字的权重,该代码是如何进行基于权重比较的示例。

关于java - Java中内置的比较排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4392137/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com