按Int对对象数组进行排序

时间:2012-11-28 20:03:43

标签: arrays sorting object integer int

所以我尝试用我的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;

        }

1 个答案:

答案 0 :(得分:0)

在javascript中你可以将函数作为参数传递给sort方法,这个函数应该带2个参数(a和b),然后返回:

  • 0,如果a == b
  • &lt; 0,如果a&lt; B'/ LI>
  • &gt; 0,如果a&gt; B'/ LI>

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

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

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