解释这种离散数学算法及其应用,Kenneth H. Rosen



Q. 描述一种算法,该算法将整数 x 插入到按递增顺序排列的整数列表中a_1、a_2、...、a_n。

一个。

procedure insert(x,a_1,a_2,...,a_n :integers)
{the list is in order: a_1<=a_2<=...<=a_n}
a_(n+1) := x+1
i :=1
while x>a_i
i :=i+1
for j:=0 to n-i
a_(n-j+1) := a_(n-j)
a_i=x
{x has been inserted into correct position}

我的问题。 为什么a_(n+1) := x+1? 如果初始值i=nj=0 to -1? 我是否排除j=-1? 抱歉说得不好,请解释此算法

为什么a_(n+1) := x+1 ?

这是哨点节点方法。

使用此停止元素,可以使用相同的方法将 x 插入列表的任何位置。否则,必须查找列表是否已完成,并在末尾附加x并带有特殊代码段

如果初始值 i=n,则 j=0 到 -1 ?

这意味着不执行for j:=0 to -1运算符(某些语言具有用于反向的特殊类型的for循环,例如Pascal中的for ..downto或其他一些语言中的step参数)

最新更新