购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

2.1.7 顺序查找算法分析(无法找到 \boldsymbol{v} 的情况)

理纱再一次将电脑屏幕转向我们。

无法找到 \boldsymbol{v} 时顺序查找算法的运行次数

“啊,这次没出现 M 呢。”泰朵拉说。

“这个……各行的运行次数正确吗?”

我思考着。

显而易见,行L1与行L2 的运行次数是一次。

但是,行L3的运行次数真的是 n+1 次吗?不应该是 n 次吗?——不不,确实是 n+1 次。因为首先在 k\leqslant n 成立的情况下, k 能取到 1,2,3,\cdots,n ,一共要运行 n 次。接着,在 k\leqslant n 不成立的情况下还有 k=n+1 时的1次。相加得 n+1 次,这就是行L3的运行次数——理纱脑筋转得真快啊。

“L3 = L2 + L8。”理纱说。

这是什么意思……算了,接着往下看吧。

行L4呢?在找不到 v 的情况下,必须比较从 A[1]A[n]n 个数。因为比较操作要在行L4进行,所以这一行的运行次数为 n 次,的确合情合理。

行L5的话……嗯,因为没有输出“能找到”,所以行L5和行L6的运行次数都是0次。

行L7和行L8的运行次数与行L4的运行次数相等,都是 n 次。

行L9则一目了然。因为输出“无法找到”后流程结束,所以行L9和行L10的运行次数都是1次。

嗯,全部正确。

泰朵拉开始在纸上计算。

无法找到 v 时顺序查找算法的运行步数

\begin{aligned}&={\rm L1+L2+L3+L4+L5+L6+L7+L8+L9+L10}\\&=1+1+(n+1)+n+0+0+n+n+1+1\\&=n+n+n+n+1+1+1+1+1\\&=4n+5\end{aligned}

“这样就完成了分情况讨论,对吧?”泰朵拉总结道。

原来如此。用数学公式表示会让人心里踏实呢……是啊,只要能像这样用数学公式来表示运行步数,就可以利用思考数学问题的方法去思考计算机问题了。我曾一度认为计算机和程序与数学毫不相关,现在看来未必是那样的。

解答2-1(顺序查找算法的运行步数)

在数列 A={A[1],A[2],A[3],\cdots,A[n]\} 中无法找到 n 时,顺序查找算法的运行步数是 4n+55j+4xhs95429OprJ31vqjlH10newJaP0ZccsC8H/08Y6w7MwdofUROleByULGFMw

点击中间区域
呼出菜单
上一章
目录
下一章
×