如何取两个已排序数组的交集?
例: 
 1,3,5,6,7,9 
 2,4,6,7,8,9 
 如何能够最快的取出交集. 
 有没有什么好的算法.我不想去一个一个的循环比较.
------解决方案--------------------如果你保证每个已排序数组中都没有重复的, 
 那么将数组a中数据全部插入数组b,从b里边找有重复的项就可以   
 这算法写起来可能比较简单,但实际上时间复杂度可能还不如循环比较-_-
------解决方案--------------------循环一个元素较少的数组,用二分法在另外一个数组中查询是否存在. 
------解决方案--------------------不用循环,不用表,好象不可能实现!!!   
 我这里有个只用一次循环的方法,不知有兴趣否?   
 把长的数组连接成一个字符串,“2,4,6,7,8,9” 
 循环短数组,检查短数组中的每个元素在字符串中是否存在。
------解决方案--------------------这实际上是把另一次循环交给C#去做了
------解决方案--------------------两个都是排好序的,其实不要循环,只要找到最大值最小值的位置就可以了,用二分法比较就好。
------解决方案--------------------int[] a = new int[m]; 
 int[] b = new int[n]; 
 ArrayList andData = new ArrayList(); 
 //a与b的初始化 
 int j = 0; 
 for(int i = 0;i  < m;i++) 
 { 
    do 
    { 
       if(a[i] == b[j]) 
       { 
          andData.Add(a[i]); 
          break; 
       } 
       j++; 
    }while(j  < n && a[i] != b[j]) 
 } 
 return andData;
------解决方案--------------------1. add 1,3,5,6,7,9 to hash table, key and value use the same value.
2.
foreach(int key in 2,4,6,7,8,9) {
if(hashtbl[key]!=null)
{
  hashtbl[key] ----is the data you want.
}
}
------解决方案--------------------放两个List里,表面效率为O(n);
C# code
 List<int> lst1 = new List<int>() { 1, 3, 5, 6, 7, 9 };
 List<int> lst2 = new List<int>() { 2, 4, 6, 7, 8, 9 };
 for (int i = 0; i < lst1.Count; i++)
 {
    if (lst2.Contains(lst1[i]))
    {
      Console.WriteLine(lst1[i]);
    }
}
------解决方案--------------------
用的是vs2005还是vs2008?
------解决方案--------------------
2008 非常简单
C# code
 
            int[] A=new []{1,2,3,4,5};
            int[] B=new []{2,4,9,10};
            int[] C=A.Intersect(B).ToArray();