各位大神们好~
我有一个计算重复度的例子:
外循环有1000个,数据为List,具体里面是1,2,4,7,13这样的数字,长度不定
内循环有300000个,数据为List,里面是1,2,3,7,29这样的数字,长度为6
自己用以下C#算法,求每种组合的重复度计算出即可。
ListlistA=newList();
listA=XXX;//这里给listA初始化1000个数字串
ListlistListB=newList();
listListB=XXX;//这里给listA初始化300000个数字串
foreach(varitemAinlistA){
foreach(varitemBinlistListB){
intcfd=getcfd(itemA,itemB)
}
}
补充个方法
intgetcfd(listlista,listlistb){
intcfd=0;
foreach(varitemINTinlista){
if(listb.contains(itemINT))cfd++;
}
returncfd;
}
上述计算,整个过程太耗时间了。
我查过网络,按两层循环优化过代码,没有明显改变。后来把getcfd方法中的改为dictionary的containsKey略能好一点,
看哪位大神,能把计算的时间降下来。
比如算法结构方面,能降低时间复杂度也行。
比如是使用多线程、缓存,减少计算次数也行。
分 -->
|