当前位置: 首页 > 编程语言 > C#

重叠多个日期范围比较:如何高效进行?分享

时间:2023-04-11 00:42:04 C#

重叠的多个日期范围比较:如何高效地进行比较?要检查两个不同日期范围内的重叠,{Start1,End1}和{Start2,End2}我正在检查:if((Start1=Start2)){//overlapexists}问题是,假设有五个日期范围,比较重叠的好方法是什么?.检查它们是否相互重叠?如果我有多个日期范围,如何确定这些范围是否重叠?查明是否所有重叠staticboolOverlap(paramsTuple[]ranges){for(inti=0;i=ranges[j].Item1))returnfalse;}}返回真;}找出是否有重叠staticboolOverlap(paramsTuple[]ranges){for(inti=0;i=ranges[j].Item1)returntrue;}}返回假;如果我没理解错的话,你要回答的问题是:这些范围是否有两个重叠?根据它们的左端对它们进行排序,然后查看1是否与2重叠,如果2与3重叠等等,如果有任何重叠,这将找到它。我不相信有任何方法可以在没有至少O(nlogn)时间的情况下回答任意间隔列表的问题,这就是对它们进行排序的代价。或者您可能想回答以下问题:这些范围中的两个是否不重叠?(从表面上看,这就是您编辑过的问题所要求的,但是(1)这似乎是一件奇怪的事情,并且(2)您上面的评论似乎表明这不是您的意思。)检查这一个点,求出最左-最右区间和最左-最右区间,看是否重叠。(如果你的两个间隔不重叠,那么两者就不会重叠。)试试这个:privateboolintersects(DateTimer1start,DateTimer1end,DateTimer2start,DateTimer2end){return(r1start==r2start)||(r1start>r2start?r1startDateTimeh1=historyRecord.serviceStartDate;DateTimeh2=historyRecord.serviceEndDate;DateTimer1=record.serviceStartDate;DateTimer2=record.serviceEndDate;如果(!((h1>r1&&h1>r2&&h2>r1&&h2>r2)||(h1checkthisalgorithmtobrieflydetectoverlappingperiods:simpleCheckiftwotimeperiodsoverlap.booloverlap=a.startorinyourcode...以上就是C#学习教程的全部内容:Overlappingmultipledaterangecomparison:Howtodoitefficiently?分享,如果对你有用,需要了解更多C#学习教程,希望大家多多关注---booloverlap=tStartA本文采集自来源于网络,不代表立场,如涉及侵权,请点击右侧联系管理员删除。如需转载,请注明出处: