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有分
17 个解决方案
#1
先根据SignDate排序,再根据IDCard排序,就是你要的结果。
#2
真的?我试一下先~
#3
可以吧数据输到数据库中,用SQL语句完成不就可以了
#4
up
#5
chenchangfu(小虾): 如果能这样,我早就这样了~~
Select Distinct *
from
order by
我肯定想这样做啊~~~
Select Distinct *
from
order by
我肯定想这样做啊~~~
#6
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的优先权会大。
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的优先权会大。
#7
同意d983074(d983074) 的意见, 但后一次排序(对IDCard) 要用稳定排序
#8
up
#9
upup
#10
我有java的算法你要不要?
#11
Wally_wu(不想再写代码) : 老大,你看清楚我的问题了吗?我真想晕你~~
我说的不是两个数组的排列啊~~我是二维数组啊~~唉~
snake_eye(黄昏深处的白骨盾牌):要,谢谢~~
我的mail our169@163.com
其他同志想要的发邮件给我,等snake_eye(黄昏深处的白骨盾牌)发给我,
我就转发给你们。
标题 二维数组排序,否则我会视为垃圾邮件,嘿嘿,没有办法。
我说的不是两个数组的排列啊~~我是二维数组啊~~唉~
snake_eye(黄昏深处的白骨盾牌):要,谢谢~~
我的mail our169@163.com
其他同志想要的发邮件给我,等snake_eye(黄昏深处的白骨盾牌)发给我,
我就转发给你们。
标题 二维数组排序,否则我会视为垃圾邮件,嘿嘿,没有办法。
#12
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: 这是二维数组吗? 不要乱说
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: 这是二维数组吗? 不要乱说
#13
哪有那么麻烦。我有一个非常简单的方法:
不就是String吗?看你的代码,IDCard应当是一个最大长度一定的String吧。比如说20个字符(足够大了吧。当然最好要确定最大长度,否则我的方法没有用)。
排序的时候设置一个S,然后将IDCard和SignDate相加,然后将相加的数据进行比较(如果IDcard长度不是最大长度,一律补空格)。
不就是String吗?看你的代码,IDCard应当是一个最大长度一定的String吧。比如说20个字符(足够大了吧。当然最好要确定最大长度,否则我的方法没有用)。
排序的时候设置一个S,然后将IDCard和SignDate相加,然后将相加的数据进行比较(如果IDcard长度不是最大长度,一律补空格)。
#14
up
#15
jufeng_zhu(老猪):似乎不错,呵呵~~想一想有道理~
#16
up
#17
up up upupupup
up up up up
up up upupupup
up up up
up up up
upupupup up
up up up up
up up upupupup
up up up
up up up
upupupup up
#1
先根据SignDate排序,再根据IDCard排序,就是你要的结果。
#2
真的?我试一下先~
#3
可以吧数据输到数据库中,用SQL语句完成不就可以了
#4
up
#5
chenchangfu(小虾): 如果能这样,我早就这样了~~
Select Distinct *
from
order by
我肯定想这样做啊~~~
Select Distinct *
from
order by
我肯定想这样做啊~~~
#6
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的优先权会大。
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的优先权会大。
#7
同意d983074(d983074) 的意见, 但后一次排序(对IDCard) 要用稳定排序
#8
up
#9
upup
#10
我有java的算法你要不要?
#11
Wally_wu(不想再写代码) : 老大,你看清楚我的问题了吗?我真想晕你~~
我说的不是两个数组的排列啊~~我是二维数组啊~~唉~
snake_eye(黄昏深处的白骨盾牌):要,谢谢~~
我的mail our169@163.com
其他同志想要的发邮件给我,等snake_eye(黄昏深处的白骨盾牌)发给我,
我就转发给你们。
标题 二维数组排序,否则我会视为垃圾邮件,嘿嘿,没有办法。
我说的不是两个数组的排列啊~~我是二维数组啊~~唉~
snake_eye(黄昏深处的白骨盾牌):要,谢谢~~
我的mail our169@163.com
其他同志想要的发邮件给我,等snake_eye(黄昏深处的白骨盾牌)发给我,
我就转发给你们。
标题 二维数组排序,否则我会视为垃圾邮件,嘿嘿,没有办法。
#12
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: 这是二维数组吗? 不要乱说
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: 这是二维数组吗? 不要乱说
#13
哪有那么麻烦。我有一个非常简单的方法:
不就是String吗?看你的代码,IDCard应当是一个最大长度一定的String吧。比如说20个字符(足够大了吧。当然最好要确定最大长度,否则我的方法没有用)。
排序的时候设置一个S,然后将IDCard和SignDate相加,然后将相加的数据进行比较(如果IDcard长度不是最大长度,一律补空格)。
不就是String吗?看你的代码,IDCard应当是一个最大长度一定的String吧。比如说20个字符(足够大了吧。当然最好要确定最大长度,否则我的方法没有用)。
排序的时候设置一个S,然后将IDCard和SignDate相加,然后将相加的数据进行比较(如果IDcard长度不是最大长度,一律补空格)。
#14
up
#15
jufeng_zhu(老猪):似乎不错,呵呵~~想一想有道理~
#16
up
#17
up up upupupup
up up up up
up up upupupup
up up up
up up up
upupupup up
up up up up
up up upupupup
up up up
up up up
upupupup up