要删除的元素数量不确定,可能1个,可能多个,可能0个
不知怎么写代码效率最高?

解决方案 »

  1.   

    删除什么数组?如果是动态数组,可以这样:
    var
      a: array of Integer;
      i: Integer;
      s: string;
    begin
      // 初始化
      SetLength(a, 10);
      for i := 0 to 9 do
        a[i] := i;
      // 删除从2开始的3个元素
      Move(a[2 + 3], a[2], 10 - 3 - 2);
      SetLength(a, 7);
      

  2.   

    更正,Move句有错: Move(a[5], a[2], (10 - 3 - 2) * Sizeof(Integer));
      

  3.   

    既然你说不确定而且不是连续性的,那么删的事先你肯定知道要删哪个,直接删不就完,如果多的话那么就把需要删的序列再弄成数组,然后一个for循环读这数组根据里面的序列删.
      

  4.   

    再怎么优化,删除动态数组元素无非移动和重组2种方式,十几几十个元素的数组元素删除怎么操作都不会影响程序多大效率,再者Move移动元素效率本来就相当高了,真不知楼主到底要怎么样。
      

  5.   


    50Mbyte上数组可以用非常规手段优化,你这个实在没优化的必要.
     
    而且不知道楼主想实现什么东西,其实换个思维方式也许不用直接删除也能实现.思维不要僵硬.