delphi合并两个数组例子

来源:互联网 发布:java研发工程师南昌 编辑:程序博客网 时间:2024/06/14 08:12

使用delphi写的例子,但愿有人来看…

{$R *.dfm}procedure TForm1.btn1Click(Sender: TObject);var arr1,arr2,arr3,arr4:array of Integer;    i,k,n,x:Integer;    a,b:integer;    flag:boolean;begin  Randomize;    a:=3;    b:=5;    SetLength(arr1,a);    SetLength(arr2,b);    lst1.Clear;    repeat    flag:=True;    for i:=0 to (a-1) do    arr1[i]:=Random(5);    for i:=0 to (b-1) do    arr2[i]:=Random(6);    //由于数组1和数组2的元素是随机出来的可能存在重复    for i:=0 to (a-2) do    begin        for k:=(i+1) to (a-1) do        begin          if arr1[i]=arr1[k] then flag:=False;        end;    end;     for i:=0 to (b-2) do    begin       for k:=(i+1) to (b-1) do       begin         if arr2[i]=arr2[k] then flag:=False;       end;    end;    until flag;    //将两个数组内容比较,排除重复的   if a>b then     begin      //遍历数量少的那个数组      for i:=0 to (b-1) do        for k:=0 to (a-1) do          begin            //如果数组1和数组2有相同元素,那么去掉数组2中的相同元素            //数组1独有的元素+数组1和2共有的元素+数组2独有的元素            if arr2[i]=arr1[k] then begin               arr2[i]:=-100;            end;          end;    end    else    begin      for i:=0 to (a-1) do        for k:=0 to (b-1) do          begin            //如果数组1和数组2有相同元素,那么去掉数组2中的相同元素            //数组1独有的元素+数组1和2共有的元素+数组2独有的元素            if arr1[i]=arr2[k] then begin               arr1[i]:=-100;            end;          end;    end;    //找出少的那个数组值为-1的数量    //数组1的数量+数组2的数量-重复数量    x:=0;    //这是a>b的情况    if a>b then    begin      for i:=0 to (b-1) do      begin         if arr2[i]=-100 then x:=x+1;      end;      n:=a+b-x;      SetLength(arr3,n);      for i:=0 to (a-1) do      begin        arr3[i]:=arr1[i];      end;      if (b-x)<>0 then SetLength(arr4,b-x);      k:=0;      for i:=0 to (b-1) do      begin          if arr2[i]<>-100 then          begin              arr4[k]:=arr2[i];          k:=k+1;          end;      end;      //x=0的时候说明没有重复的      for i:=a to (b-x+a-1) do      begin        if (b-x)<>0 then arr3[i]:=arr4[i-a];      end;    end    // a<=b的情况    else    begin      for i:=0 to (a-1) do      begin         if arr1[i]=-100 then x:=x+1;      end;      n:=a+b-x;      SetLength(arr3,n);      for i:=0 to (b-1) do      begin        arr3[i]:=arr2[i];      end;      //x=0的时候说明没有重复的      if (a-x)<>0 then SetLength(arr4,a-x);      k:=0;      for i:=0 to (a-1) do      begin          if arr1[i]<>-100 then          begin              arr4[k]:=arr1[i];          k:=k+1;          end;      end;      //x=0的时候说明没有重复的      for i:=b to (a-x+b-1) do      begin        if (a-x)<>0 then arr3[i]:=arr4[i-b];      end;    end;    k:=0;    for i:= 0 to (n-1) do    begin      k:=k+1;      lst1.Items.Add(IntToStr(arr3[i]));    end;    edt1.Text:=IntToStr(k);end;