如何知道一个有重复数据的数组中不相同数据的个数?
如一个数组 是这样的A_number(a,a,a,b,c,d,d,e) 
我如何得到不同数据的个数为5

解决方案 »

  1.   

    1 用集合
    2 自己写代码
    n:= length(A_Number);
    for j:= 1 to length(A_Number)
     for i:= 0 to j do
     begin
       if A_Number[i]=A_Number[j] then n--;
       break;
     end;
    n为不同的数
      

  2.   

    1 用集合
    2 用代码循环
    n:=length(A_number);
    for j:= 1 to length(A_number) do
     for i:= 0 to j-1 do
      if A_number[i]=A_number[j] then
      begin
       Dec(n);
       break;
      end;
    n为所求
      

  3.   

    这个问题的解决要看数组中是什么类型的数据,如果是单个的字符型,就比较简单了。
    首先设置一个数组int tag[97..122],97也就是a,122也就是z,
    初始化该数组tag[i]:=0;
    然后遍历所有数据,将字符转换为整型,比如a转化为97,再将tag[i]++;
    最后只要将tag[i]全部相加即可,这种算法针对字符型而言效率比楼上的要高一点,
    特别对于比较多的数据处理而言
      

  4.   

    n:=length(A_number);
    for j:= 1 to length(A_number) do
     for i:= 0 to j-1 do
      if A_number[i]=A_number[j] then
      begin
       Dec(n);
       break;
      end;
    n为所求
      

  5.   

    从原数组中顺序选取新!!的元素到一个新数组中(同类型的,可以是动态数组)最后的新数组的个数就是Result了,可以使到多数可比对象。可以专门写一个通用型的放到你自己的dll 中。