VisualStudio2008のDataGridViewでヘッダーのカラムをクリックすると、昇順、降順に並び替えができますが何を基準に並び替えているのでしょうか。クリックしたカラムに同じ値が複数あった場合、昇順、降順にはなるのですが、一回目の昇順の並びと2回目の昇順の並びが異なります。
DataGridViewColumnSortMode.Automaticとした場合、プログラムで.Sort(datagrid.Columns(colum), System.ComponentModel.ListSortDirection.Descending)を使った場合両方ともです。
クイックソートのアルゴリズムで入れ替えられる位置にいるかどうかじゃない?
クイックソートは同等の値があるときに、安定性に欠けるということがわかりました。
昇順でソートするときは現在の位置を先頭から順に採番していき、降順でソートするときは一番下から順に採番して、ソートの対象となるデータと採番した値をくっつけてソートするとうまくいきました。(Excelのデータ並べ替えと同様の動きになりました)
ありがとうございました。
ツイート | ![]() |