以下算法返回数组的前一个较大元素。它来自这些注释的第 11 页。
// Input: An array of numeric values a[1..n]
// Returns: An array p[1..n] where p[i] contains the index of the previous
// larger element to a[i], or 0 if no such element exists.
previousLarger(a[1..n])
for (i = 1 to n)
j = i-1;
while (j > 0 and a[j] <= a[i]) j--;
p[i] = j;
return p
我的作业问题是:给定输入序列{a1,...,an}
是集合的随机排列,{1,...,n}
预期的运行时间是多少?
我认为这需要某种概率分析,但我需要一些提示,因为我过去只做过最坏情况分析。我试图找到j-loop
给定 i 的成本公式(1 + 我们执行操作的次数j--
),然后将该公式从 1 加到 n。
“预期”是什么意思?我真的不知道如何解释这个。