我有一个WPF数据网格,可以通过单击列标题来对其进行排序。它可以工作,但不稳定。如何使其进行稳定排序?
我的意思是,如果我有这个表:
Class | Student | Grade
-----------------------------
Art | James | A
Art | Amy | B
Art | Charlie | A
Science | James | D
Science | Amy | A
Science | Charlie | C
History | James | B
History | Amy | A
History | Charlie | C
如果按学生排序,它会像你期望的那样工作:
Class | Student | Grade
-----------------------------
Art | Amy | B
Science | Amy | A
History | Amy | A
Art | Charlie | A
Science | Charlie | C
History | Charlie | C
Art | James | A
Science | James | D
History | James | B
但是,如果我现在按类别排序:
Class | Student | Grade
-----------------------------
Art | James | A
Art | Amy | B
Art | Charlie | A
History | James | B
History | Amy | A
History | Charlie | C
Science | James | D
Science | Amy | A
Science | Charlie | C
它破坏了学生的排序顺序(不稳定排序)。我想要的是稳定排序,它可以保留顺序。
Class | Student | Grade
-----------------------------
Art | Amy | B
Art | Charlie | A
Art | James | A
History | Amy | A
History | Charlie | C
History | James | B
Science | Amy | A
Science | Charlie | C
Science | James | D
似乎默认情况下应该这样工作,或者至少应该是一个切换开关。有人有什么建议吗?@Eirik的想法是shift-clicking可以实现,这表明了这种行为已经存在。但是,我真正想要的是在没有任何修改器的情况下就能像那样工作。它不应该成为“按这个排序,然后再按这个排序,然后再按这个排序”的原因,而应该是将算法交换为另一种算法的情况。
请参见:http://en.wikipedia.org/wiki/Sorting_algorithm#Stability