1

因此,我尝试实现我的 Quicksort 以按权重对一组边进行排序,这在我的 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;
        }
    }

克鲁斯卡尔的密码

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;

        }
4

1 回答 1

0

在 javascript 中,您可以将函数作为参数传递给排序方法,该函数应采用 2 个参数(a 和 b),并返回:

  • 0,如果 a == b
  • <0,如果 a < b
  • >0,如果 a > b

在你的情况下,它应该是这样的:

var a=[15,7,100,50];
a.sort(function(a,b){return a.weight-b.weight;});

因此,您可以轻松地按任何数组内容的属性或更复杂的标准进行排序。

于 2012-11-28T20:11:20.557 回答