两个求字符串集合并集大小的算法的效率比较问题!
/// <summary>
/// 求两个集合并集的大小
/// </summary>
/// <param name="setA">集合A</param>
/// <param name="setB">集合B</param>
/// <returns>集合setA与集合setB并集的大小</returns>
private int UnionSetSize(List<string> setA, List<string> setB)
{
int retUnionSize = 0;
setA.AddRange(setB);
setA.Sort();
for (int index = 1; index < setA.Count; index++)
{
if (setA[index] == setA[index - 1])
{
retUnionSize = retUnionSize + 1;
}
}
return retUnionSize;
}
/// <summary>
/// 求两个集合并集的大小
/// </summary>
/// <param name="setA">集合A</param>
/// <param name="setB">集合B</param>
/// <returns>集合setA与集合setB并集的大小</returns>
private int UnionSetSize(List<string> setA, List<string> setB)
{
int retUnionSetSize = 0;
foreach (string tmpElem in setA)
{
if (setB.Contains(tmpElem))
{
retUnionSetSize = retUnionSetSize + 1;
}
}
return retUnionSetSize + 1;
}
为什么第二个算法会比第一个算法还要快?
C#2.0里面没有Union,顺便请教下C#2.0下实现该功能的高效算法,或C#3.0中List.Union的实现方法!