所以我尝试用我的Quicksort按重量对Edges数组进行排序,这是我的Kruskal算法实现的int。 javascript中是否有一个构建函数用于按属性对对象数组进行排序?在这种情况下由他们的重量。从最小的重量到最大的重量。
这是我的边缘课。
class Edge
{
private int u;
private int v;
private int weight;
public Edge(int i, int i2, int w)
{
u = i;
v = i2;
weight = w;
}
public int getU() {
return u;
}
public int getV() {
return v;
}
public int getWeight() {
return weight;
}
}
Kruskal的代码
class MSTKruskal
{
Edge[] mst(int[][] G)
{
Edge A[] = new Edge[G.length - 1];
Forest aForest = new Forest(G.length);
Edge E[] = new Edge[(G.length * G.length - G.length)/2];
int i3 = 0;
for (int i = 0; i < G.length; i++)
{
for(int i2 = i+1; i2 < G.length; i2++)
{
Edge anEdge = new Edge(i, i2, G[i][i2]);
E[i3] = anEdge;
i3++;
}
}
print(E);
//QuickSort(E, 0, E.length);
print(E);
int index = 0;
for (int i = 0; i < E.length; i++)
{
if (aForest.findSet(E[i].getU()) != aForest.findSet(E[i].getV()))
{
A[index] = E[i];
index++;
aForest.union(E[i].getU(), E[i].getV());
}
}
aForest.printA();
return A;
}
答案 0 :(得分:0)
在javascript中你可以将函数作为参数传递给sort方法,这个函数应该带2个参数(a和b),然后返回:
在你的情况下它应该是这样的:
var a=[15,7,100,50];
a.sort(function(a,b){return a.weight-b.weight;});
因此,您可以轻松地按任何数组内容的属性或更复杂的条件进行排序。