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

时间:2017-03-31 01:10:42

标签: algorithm discrete-mathematics

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=n,那么j=0 to -1? 我会排除j=-1吗? 抱歉说不好请解释这个算法

1 个答案:

答案 0 :(得分:1)

  

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

这是sentinel node方法。

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

  

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

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