数据库的话应该很快了(相对比较而言吧) SQL 语句如下:
Select a,Sum(c) As d From Table Group By a
具体的时间要看数据库的不同了。
你的程序应该还有办法可以优化的。
比如b,d你可以用TStringList来存储,因为TStringList支持一种访问的方式在你的程序中就很与用处,也就是它可以把一个名字(Name)和一个值联系起来(字符串类型)的,而且可以通过名字找到这个值,程序可以改成这样的:
Const
    arraynum = 100000;Var    a: Array[0..arraynum] Of String;
    c: Array[0..arraynum] Of integer;   slDest:TStringList;//代替了b,d
    //首先初始化slDest的Strings[i]="0"
    For i:=0 To files Do
    Begin
         slDest.Values[a[i]]:=IntToStr(StrToInt(slDest.Values[a[i]])+c[i]);
    End;
    slDest.Sort;//或者通过别的方法来排序.    

解决方案 »

  1.   

    由于数据库是有索引的,所以用SQL求和和排序肯定可以快很多!不过50万条数据的处理应该至少要几分钟。
    上面的SQL语句少排序部分。
    Select a,Sum(c) As d From Table Group By a order by a
      

  2.   

    实际是分类统计;若用DELPHI直接统计,
    需要一个好的动态查找算法(long2(N)),如树型结构,同时自动排序,
    这是减少时间的关键;1。对每一个(a,c)-->在树中查找->有:累加;没有:插入;
    2。将统计好的树-->生成数组(b,d)