二维数组是这样定义的
 type
    Info = record
    IDCard: string;
    SignDate: string;
  end;
 
 A : array of Info;这是一个选择排序算法 procedure Sort(var A: array of Info);
    var
      I, J : Integer;
      T:MuliIDCardInfo;
    begin
      for I := Low(A) to High(A) - 1 do
        for J := High(A) downto I + 1 do
          if A[I].IDCard>A[J].IDCard then
          begin
            T := A[I];
            A[I] := A[J];
            A[J] := T;
          end;
    end;数组中IDCard会有相同的记录情况,而且很多,所以我必须再根据SignDate
排一下序,同时再统计一下IDCard相同的个数。
有点像 Select Distinct IDCard From .......我现在的困惑是,怎样 根据 IDCard,同时又根据SignDate,排序?现在我只能根据 IDCard排序~~~ up有分

解决方案 »

  1.   

    先根据SignDate排序,再根据IDCard排序,就是你要的结果。
      

  2.   

    可以吧数据输到数据库中,用SQL语句完成不就可以了
      

  3.   

    chenchangfu(小虾): 如果能这样,我早就这样了~~
    Select Distinct *
    from 
    order by 我肯定想这样做啊~~~
      

  4.   

    procedure Sort(var A: array of Info;var B: array of Info;);
    var
      I, J : Integer;
      T:MuliIDCardInfo;
    begin
      for I := Low(A) to High(A) - 1 do
        for J := High(A) downto I + 1 do
          if A[I].IDCard>A[J].IDCard then
          begin
            T := A[I];
            A[I] := A[J];
            A[J] := T;
          end;
        end;
      end;
      for I := Low(B) to High(B) - 1 do
        for J := High(B) downto I + 1 do
          if B[I].IDCard>B[J].IDCard then
          begin
            T := B[I];
            B[I] := B[J];
            B[J] := T;
          end;
        end;
      end;
    end;不就可以了吗,当然,参数B的优先权会大。
      

  5.   

    同意d983074(d983074) 的意见, 但后一次排序(对IDCard) 要用稳定排序
      

  6.   

    我有java的算法你要不要?
      

  7.   

    Wally_wu(不想再写代码) : 老大,你看清楚我的问题了吗?我真想晕你~~
     我说的不是两个数组的排列啊~~我是二维数组啊~~唉~snake_eye(黄昏深处的白骨盾牌):要,谢谢~~我的mail [email protected]其他同志想要的发邮件给我,等snake_eye(黄昏深处的白骨盾牌)发给我,
    我就转发给你们。
    标题 二维数组排序,否则我会视为垃圾邮件,嘿嘿,没有办法。
      

  8.   

    procedure Sort(var A: array of Info);
        var
          I, J : Integer;
          T:MuliIDCardInfo;
          Count : Array of integer;   //动态数组怎么用我忘了
        begin
          for ....
            Count[I]:=1;      for I := Low(A) to High(A) - 1 do
            for J := High(A) downto I + 1 do
              if A[I].IDCard>A[J].IDCard then
              begin
                T := A[I];
                A[I] := A[J];
                A[J] := T;
              end;
              if A[I].IDCard=A[J].IDCard then
                if A[I].SingleDate>A[I].SingleDate
                begin
                  Count[I]:= Count[I]+1;
                  T := A[I];
                  A[I] := A[J];
                  A[J] := T;
                end;
        end;
    PS:  这是二维数组吗? 不要乱说
      

  9.   

    哪有那么麻烦。我有一个非常简单的方法:
    不就是String吗?看你的代码,IDCard应当是一个最大长度一定的String吧。比如说20个字符(足够大了吧。当然最好要确定最大长度,否则我的方法没有用)。
    排序的时候设置一个S,然后将IDCard和SignDate相加,然后将相加的数据进行比较(如果IDcard长度不是最大长度,一律补空格)。
      

  10.   

    jufeng_zhu(老猪):似乎不错,呵呵~~想一想有道理~
      

  11.   

    up    up   upupupup
    up    up   up      up
    up    up   upupupup
    up    up   up
    up    up   up
    upupupup   up