我尝试了许多不同的算法,但是找不到合适的算法。
所以基本上我会有一个矩阵
1 0 1 | 4
7 0 1 | 9
1 1 3 | 3
我想对它进行排序,使其最类似于单位矩阵
1 0 0
0 1 0
0 0 1
因此,对于先前的矩阵,它将返回
1 0 1 | 4
1 1 3 | 3
7 0 1 | 9
谁能告诉我排序功能,最好是用javascript做到这一点?
这就是我到目前为止
matrix.sort(function(a,b) {
if (b.indexOf(1)!=-1) {
var index = a.indexOf(1)-b.indexOf(1)
if (index!==0) return index
else {
return b.indexOf(0) - a.indexOf(0)
}
}
else {
return 0
}
})
其他一些例子
3 1 -2 | 2
1 -2 1 | 3
2 -1 -3 | 3
会变成
1 -2 1 | 3
3 1 -2 | 2
2 -1 -3 | 3
和
3 1 -2 | -7
2 2 1 | 9
-1 -1 3 | 6
会变成
-1 -1 3 | 6
3 1 -2 | -7
2 2 1 | 9
最佳答案
这与String Metrics非常相似。换句话说,您的算法应以字符串度量/距离算法(例如Levenshtein Distance)为模型。
基本上,您的算法需要定义如何对相似度进行排名。
通常使用“位移”和“匹配”点来完成。
接近100-010还是000?
您应该决定如何对相似度进行排名,然后找到排名最高的集合。