我什至不知道从哪里开始处理这类问题,希望有人能给我指出正确的方向。
我有一个项目列表,每个项目都有四个属性。对属性进行权衡,例如,属性 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/