1

レコード内の番号でいくつかのレコードを並べ替えている場合を考えてみましょう。

Name  Number_of_Language_Known
John  3
Mary  2
Peter 3
Mike  1
...

で並べ替えも行わない場合Name、JohnとPeterの順序は保証されませんが、レコードが変更されない場合はランダムに並べ替えるべきではありませんか?ほとんどの環境で当てはまるはずです(つまり、他に何も変更されておらず、並べ替えは2回行われます)。

つまり、1回並べ替えると、ジョンの前のピーターではなく、2回目はピーターの前のジョンになります。

これは、Ruby on Rails環境で、レコードがDBからフェッチされ、Ruby関数で並べ替えられ、元のページコンテンツとして出力される場合、順序は一方向ですが、後でAJAXを介してデータが要求される場合はソートされた配列要素は、その番号フィールドに同じ番号を持つレコードの場合、順序が異なる可能性があり、それは奇妙に思えます。

更新:データがdbからのものである場合、レコードがフェッチされるときにdbの順序が予測できない可能性があります。しかし、そもそもレコードがプライマリIDでソートされている場合はどうなるでしょうか。また、データがすでにデータ構造内にある場合、毎回異なる並べ替え順序を生成する一般的な並べ替えアルゴリズムはわかりません。つまり、順序は保証されていませんが、ランダムではありません。

4

2 に答える 2

4

「保証されていない」とは、いつでも変更できることを意味します(現在のメモリレイアウト、ガベージコレクター、時間などに応じて)別の属性のソート順を安定させる必要がある場合は、両方の属性でソートする必要があります(IDで、次に名前で-あなたの場合)

于 2010-08-05T03:52:25.260 に答える
3

これらの値がアクティブ レコード モデルから取得されていると仮定すると、順序付けはデータベース自体から取得されます。異なるデータベースは異なる方法で順序付けを処理したため、特定のデータベースのドキュメントを確認する必要があるでしょう。

于 2010-08-05T03:54:06.840 に答える