我在看华中科大的算法基础教材,里面的所有算法都是通过一种SPEAK的语言给出的。
现遇到一个问题,哪问懂得的大侠帮个忙撒!
procedure MERGE1(p,q,r)
//q和r是全程数组LINK(1:n)中的两个表的指针。这两个表可用来获得全程数组A(1:n)中已分类元素的子集合。此算法执行后构造出一个由P所指示的新表,利用此表可以得到按非降次序把A中元素分好类的元素表,同时q和r所指示的表随之消失。假定LINK(0)被定义,且假定表由0所结束//
global n,A(1:n),LINK(0:n)
local integer i,j,k
i<–q; j<—r; k<—0 //新表在LINK(0)处开始//
//这里明明说q和r是指针了,而且i和j是整型变量,可为什么还可以进行赋值啊
while i != 0 and j !=0 do //当两表皆非空的时作// //不等号没找到,用的C中格式
if A(i)<=A(j) //找较小的关键字//
then LINK(k)<—i; k<—i; i<—LINK(i) //加一个新关键字到此表//
else LINK(k)<—j; k<—j; j<—LINK(i)
//这里的i和j 是以什么样的类型赋给LINK()的。
endif
repeat
if i=0 then LINK(k)<—j
else LINK(k)<—i
endif
p<—LINK(0)
end MERGE1
在这小弟先谢谢了!