请教一个数组整理的算法。(50分)

  • 主题发起人 主题发起人 Conch
  • 开始时间 开始时间
C

Conch

Unregistered / Unconfirmed
GUEST, unregistred user!
有个数组[2,2,1,1,1,1],怎么写算法能是不同的数字相互错开,比如得到[1,2,1,2,1,1]。我想的头都大了
 
var i,j:integer;
temp:integer;
for i:=1 to no do
begin
for j:=i+1 to no do
if d<>d[j] then
begin
if j<>i+1 then
begin
temp:=d[i+1];
d[i+1]:=d[j];
d[j]:=temp;
end;
break;
end;
end;
 
不能够随机生成不同组合的啊。[:(]
 
可以换一种方法,比如:
先得到[1,1,1,1],然后再把两个2插入到四个1中,得到[1,2,1,2,1,1]
 
多人接受答案了。
 
后退
顶部