2W个list<string>,每个list相当于有个ID,我要list两两比较,如果list里面的值有相同的情况,我就把两个list的id和比较相同的个数记录下来。
例如 a是个list,b是个list,他们的值有相同的个数3个,我的数据库就记录,a,b,3;就这样不知道说清楚没?
list1里面有 1,2,3,4,5
list2里面有 2,6,7,8
这个两个比较的话
我的数据库里面就记录
list1 , list2 1;
比较急,大家帮帮忙。怎么算速度才能最快。
例如 a是个list,b是个list,他们的值有相同的个数3个,我的数据库就记录,a,b,3;就这样不知道说清楚没?
list1里面有 1,2,3,4,5
list2里面有 2,6,7,8
这个两个比较的话
我的数据库里面就记录
list1 , list2 1;
比较急,大家帮帮忙。怎么算速度才能最快。
List<string> list1 = new List<string> { "1", "2", "3", "4", "5" };
List<string> list2 = new List<string> { "2", "6", "7", "8", "9" };
Console.WriteLine(list1.Intersect(list2).Count());
for(int i =0 ;i < list0.length;i++){
for(int j =0 ; j< list1.length;j++){
if(list0.get(i)<list1.get(j)) break;
else{
if(list0.get(i)=list1.get(j)) System.out.print(list0.get(i));
}
}
}
如果没有排序就直接遍历两遍对比吧,因为排序也是要花时间的
这个就可以了吧!或者排序一个,之后查找另一个,在排序的list中二分查找,复杂度差不多!
关于list1与list2之间的比较,我现在已经解决了,但是另外就是有个问题。list1代表一个list.
比如我从list1开始比较一值比到最后一个list20000,就要比较2W次,如果单一从一边开始比较就比较慢,我又个想法就是,从中间开始比起走,往两边出发.list1从1ist10000W往前比,一个往后比。这种两头比。会不会要快点呢。不知道这种想法正确不。能不能实现。
两个集合利用LINQ取交集.
List<string> list2 = new List<string> { "2", "6", "7", "8", "9" };
Console.WriteLine(list1.Intersect(list2).Count());
http://msdn.microsoft.com/zh-cn/library/bb460136%28v=VS.100%29.aspx