MSFlexGridソート列に同じ値がある場合は?

解決


VB素人  2006-02-11 02:36:59  No: 130162

お世話になります。

MSFlexGridのsortプロパティでソート対象に指定した列に対し、
同じ値が複数行に存在する場合、
ソート結果を予想することはできるのでしょうか。
(降順文字列ソートflexSortNoCaseDescendingを指定しています。)

テストパターンをいくつか作って実行してみた結果、
実行結果は毎回同じになるのですが、
テストパターンとテスト結果の因果関係が正確には把握できていません。

今わかっているのは、次の2点です。
1.もともと並んでいる場合はソート処理自体が行われていない
2.一部でも順番が前後していると、ソート処理が実行される。
    同じデータで、並び順のみが異なるパターンを複数作成し
    ソートを実行すると、結果が異なる。
    例えば次のパターン1とパターン2をソートすると、
    結果が異なる。(結果は割愛します。)
  (パターン1)  A  B
                -------
                  2  2
                  2  3
                  2  4
                  1  1

  (パターン2)  A  B
                -------
                  2  2
                  2  4
                  2  3
                  1  1

上記のように、
複数行に同じ値が入っている列をソートした場合の動作について、
ご教授頂けますでしょうか。

また情報源についても知見ございましたらご教示の程お願い致します。

宜しくお願い致します。


我龍院忠太  2006-02-11 07:39:43  No: 130163

ソートには"安定"という概念があります。
"安定"とはキーが同じ場合、データーを並べ替えないことをいいます。
http://www.geocities.jp/ky_webid/cpp/library/019.html
MSFlexGridがどんなソートを使用しているかは知りませんが、多分
安定なソートを使用しているように思われます。


NEU  2006-02-11 23:04:30  No: 130164

確認ですが、A列のColとソート前のCol、ColSelの値はいくつでしょうか。


VB素人  2006-02-20 22:24:32  No: 130165

お世話になります。

経験則でしかありませんが、
確かに結果を見ると、MSFlexGridは安定ソートで実装されているようです。

ご助言、ありがとうございました。
>我龍院忠太様

確認が遅くなり、失礼致しました。


※返信する前に利用規約をご確認ください。




  


  このエントリーをはてなブックマークに追加