基于加权值确定项目顺序的算法

标签 algorithm sorting

我什至不知道从哪里开始处理这类问题,希望有人能给我指出正确的方向。

我有一个项目列表,每个项目都有四个属性。对属性进行权衡,例如,属性 1 比属性 2 更重要,等等。

我希望找到某种算法或方程式来根据这些值对这些项目进行排序。想法?

最佳答案

你应该使用 regular sorting algorithm ,唯一不同的是你的比较器,即 x<y比较复杂,应该类似于下面的伪代码:

compare(x,y) {
   if (x.attribute1 < y.attribute1) return -1
   if (x.attribute1 > y.attribute1) return 1
   if (x.attribute2 < y.attribute2) return -1
   if (x.attribute2 > y.attribute2) return 1
   if (x.attribute3 < y.attribute3) return -1
   if (x.attribute3 > y.attribute3) return 1
   if (x.attribute4 < y.attribute4) return -1
   if (x.attribute4 > y.attribute4) return 1
   return 0
}

另一种方法是使用 stable sorting algorithm ,然后对每个属性重复排序,从最不重要的开始,到最重要的结束。

关于基于加权值确定项目顺序的算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30499487/

相关文章:

algorithm - 解决困难问题的算法的方法是什么?它如何应用于这个例子?

node.js - Couchbase 查看 : get documents by keys, 已排序

java - 在 O(N) 时间内对数组进行排序

bash - 按字段对文件内容进行数字排序

java - 使用比较器按字母顺序对对象进行排序?

c++ - 使用我自己的 list.sort() 逻辑,试图模拟其他来源,为什么我会收到看似正确格式的错误?

C++ 在没有 lambda 的情况下对索引 vector 进行排序

algorithm - 计算树中边两侧的节点数

algorithm - 寻找位置造句

algorithm - 增加一组数字,使 XOR 和为 0