双重for循环如何优化效率?

双重for循环如何优化效率?

原标题:双重for循环如何优化效率?

关键字:iOS,程序员,算法,编程,优化策略

最佳回答:知乎用户

回答字数:1018字

这个问题解决了,我直接粘贴代码把。感谢

钟颖Cyan

的回答,很受启发。

在取到数据之后,直接把他们放到全局字典里,字典正好还有排重功能。

-(void)reloadData{

_allScheduleArray = [self.evEngine.businessCoreDataManager efGetAllSchedule];

for (ScheduleEntity *schedule in _allScheduleArray) {

NSString *currDateStr = [NSDate stringFromDate:[NSDate dateWithTimeIntervalSince1970:[schedule.sTime doubleValue]] format:kDateFormat];

NSLog(@%@,currDateStr);

[_markDic setObject:@1 forKey:currDateStr];

}

}

然后每次调用比较的时候,只需要看字典里有没有这个键就好了,有就return YES

– (BOOL)calendarHaveEvent:(JTCalendar *)calendar date:(NSDate *)date

{

NSString *oldDateStr = [NSDate stringFromDate:date format:kDateFormat];

if (_markDic[oldDateStr]) {//存在即找到

return YES;

}

return NO;

}

这样改之后,效率大大提高,用户完全感受不到2秒的等待了,秒出。

本文链接:

联系作者

回答作者:知乎用户

0

评论0

  1. 外层for循环,匹配用字典判断,这样只需要一层for循环就好,只不过内层的字典需要在外面由原本该在内层的for循环先转换成字典,这样的复杂度就是 O(n) + O(n)了,210+50,而不是210*50

    hjl4am 2023-09-26 0 回复
没有账号?注册  忘记密码?