求合并重叠时间段的算法
同一天中的一连串不连续时间段,合并其中重叠时间,如:
StartTime EndTime
06:10:58 08:15:28
07:38:56 10:34:45
10:55:00 11:34:00
13:09:34 17:45:23
14:23:12 15:24:14
16:14:25 17:52:15
...
合并后为:
StartTime EndTime
06:10:58 10:34:45
10:55:00 11:34:00
13:09:34 17:52:15
...
用SQL或C#代码都可以,SQL的话因为数据库是SQL Compact,不支持存储过程,编程能力差,所以用C#相对简单一点,数据放在DataTable或List中都可以,其实任意语言均可,我只是想要一个好点的算法,
我现在想出的算法是先按开始时间排序,排序后遍历所有元素,使每个时间段跟它下一个时间段比较,合并重叠时间段,然后递归再次比较,直到每个时间段都与它下一个时间段没有重叠为止,这个算法一是效率太低,而且我觉得好像也有点问题。
这个算法应该在HR系统的考勤记录中应用比较多,不知那位兄台有比较好的算法?