两道填空题,大家帮忙看看!(100分)

  • 主题发起人 主题发起人 equation_xyz
  • 开始时间 开始时间
E

equation_xyz

Unregistered / Unconfirmed
GUEST, unregistred user!
一, 下面是改进的选择排序法,每次从数组a[1..n]中选出当前最大的元素,将其换到a的尾部,选择最大元素时,每发现一个比a更大的元素时,就进行交换,并记下交换位置,使下一次交换时能缩小选择范围。
begin
k:=1;b[1]:=1;
___?___:=n;m:=1;
while i>1do
for j:=m to ____?____do
if a[j]>a then
begin
w:=a;a:=a[j];a[j]:=w;
k:=k+1;___?___
end;
____?____;
m:=b[k];
if k>1 then
___?___;
w:=a;a:=a[m];a[m]:=w;
end
end
二,下面的类pascal程序是求无向连同加权图的最小生成树的prim算法,顶点编号为1到n,边用实型的邻接数组c[1..n,1..n]存储。
待选边和最后的生成树边共同存储在t[2..n]中,t的元素是记录类型,共两个域,域v1表示已在生成树中的顶点号,域v2表示尚未在生成树中的顶点号,(t.v1,t.v2)表示顶点 i所对应的待选边,开始时,只有编号为1的顶点在生成树中。
begin
for i:=2 to ndo
begin
t.v1:=1;___?___:=i end;
for i:=2 to ___?___do
begin
j:=i;
for k:=k+1 to ndo
{选择最短的待选边}
if c(t[k].v1,t[k].v2)< c(t[j].v1,t[j].v2) then
___?___;
交换t和t[j];
v:=___?___;
for k:=i+1 to ndo
if c(t[k].v1,t[k].v2)< c(v, t[k].v2) then
___?___
end
end
 
第一题由上到下内容为:
1、i
2、i
3、i:=i-1;
4、k:=n;
5、k:=k-1;
 
cnzhw007:
感谢你的回复,我会为你加上五十分的,另外希望大家能提供第二题的答案,谢谢!
 
第二题,我得回去看看书了,好久没有搞树和图的算法了,都还给老师了!
 
第二题由上到下内容为:
1、k
2、n
3、j:=k;
4、t[j].v1;
5、c(v, t[k].v2):=c(t[k].v1,t[k].v2);
 
我觉得你的算法中有一些问题,就是没有说明断开连通的标志!
 
后退
顶部