0

次のようなオブジェクトの配列があります。

var a = {
 "TypeID" : 15,
 "Attr1" : "Something"
};

var b = {
 "TypeID" : 17,
 "Attr1" : "Something"
};

var c = {
 "TypeID" : 15,
 "Attr1" : "Something"
};

var d = {
 "TypeID" : 15,
 "Attr1" : "Something"
};

var e = {
 "TypeID" : 1,
 "Attr1" : "Something"
};

var objectArray = new Array();
objectArray.push(a);
objectArray.push(b);
objectArray.push(c);
objectArray.push(d); 

注文の値として TypeID を使用して配列を並べ替えようとしましたが、注文の挿入を保持する必要があります。つまり、最終的な順序は次のようにする必要があります。

e,a,c,d,b

しかし、古典的な並べ替えアルゴリズム (Bubble または Quicksort) を実装すると、配列は順序付けされますが、同様の値 (TypeID) の挿入順序は異なる位置にあります。

私は最初に同様のタイプのオブジェクトを注文しようとしましたが、残りは迷子になりました。

4

1 に答える 1

0

あなたが求めているのは、同一のソートキーを持つオブジェクトの初期順序を保持するソート関数をどのように実装するかということである場合、私が知っている唯一の方法は次のとおりです。

  1. 同順位の元の順序を維持することが保証されているソート アルゴリズムを使用する

  2. 元のソート序数であるセカンダリ キーを追加し、同順位のセカンダリ ソート キーを参照するソート アルゴリズムを使用します。

于 2013-05-10T03:50:02.510 に答える