按工作日的顺序合并星期几,而不是按字母顺序排列

时间:2015-04-14 19:15:23

标签: c# algorithm sorting mergesort

我有一个带有字符串属性的对象数组,表示工作日。我想写一个合并排序算法来按工作日的顺序对我的对象数组进行排序。

我能够编写合并排序算法,但我想知道如何按工作日的顺序排序,而不是按字母顺序排序? 非常感谢提前。

2 个答案:

答案 0 :(得分:3)

对支持自定义比较器的对象使用集合,或者只在对象as demonstrated here上实现IComparable。然后只需使用属性的静态映射进行排序,或者如果可以将字符串属性映射到DayOfWeek枚举,则使用该内置顺序。

答案 1 :(得分:2)

不要编写排序算法,而是编写一个简单的Comparer,它将实现IComparer,将您的数组转换为列表,对该列表进行排序,然后根据需要转换回数组。 a可能的比较器将是这样的:

Public WeekDayNameComparer<YourObject> : IComparer<yourObject> 
{
   private string[] WeekDays = {"sunday", "monday", ..."friday"}
   public int Compare(YourObject x, YourObject y) {
      return Array.indexOf(WeekDays, x.WeekDay).CompareTo(Array.indexOf(WeekDays, y.WeekDay));
   }
}