我甚至不确定从哪个问题开始,并希望有人能指出我正确的方向。
我有一个项目列表,每个项目都有四个属性。这些属性有利于权衡,例如,属性1比属性2更重要,等等。
我希望找到一种算法或某种方程式来根据这些值来订购这些项目。想法?
答案 0 :(得分:6)
您应该使用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,并重复每个属性的排序,从最不重要的开始,到最重要的结尾。
答案 1 :(得分:1)