求助一个在有重复数的数组内,消除重复元素的最好算法?
因为数据量会比较大,所以希望算法能够最优。

解决方案 »

  1.   

    可以考虑用Hashtable的ContainsKey来判断是否已经有重复的元素
      

  2.   

    利用列表ArrayList存储数组中不重复的元素,然后再赋值给数组(或者直接用列表ArrayList):
    ArrayList q=new ArrayList();
    foreach(int i in array)
    {
        if(!q.Contains(i))
        {
            q.Add(i);
        }
    }//如果你习惯用数组你可以用下列语句转换,否则可以直接通过索引在列表中访问数据
    array=new int[q.Count];
    for(int i=0;i<q.Count;i++)
        array[i]=q[i];
      

  3.   

    ArrayList.Contains的复杂度是O(n),而Hashtable.ContainsKey的复杂度接近O(1)
      

  4.   

    谢谢各位,既然如此,那么我就采用hashtable的方式吧。呵呵。
      

  5.   

    我觉得arraylist和hashtable应该各有擅长的地方。等把手上的事情作了,好好研究一下:)
      

  6.   

    把它往一个HashTable里面填,再导出来。