1
所以我尝试实现我的快速排序按照他们的重量排序边缘数组,这是在我的克鲁斯卡尔算法实现int。在JavaScript中是否有一个构建的函数,用于通过属性对对象数组进行排序?在这种情况下,他们的重量。从最小的重量到最大的重量。对他们的Int对象数组排序
这是我的边缘类。
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;
}
我是否在我的Edge类中创建了这个函数? – user1861108
不,这个功能应该采取两个边缘,并按重量进行比较。实际上,它应该看起来像这样:'function(a,b){return a.getWeight() - b.getWeight();}' – cleg