【发布时间】:2010-12-10 07:25:07
【问题描述】:
我正在为数据挖掘入门课程做作业。我想弄清楚算法的时间复杂度(见下文)?它是线性/指数/对数/二次/多项式吗?任何有关如何处理此类问题的提示将不胜感激
考虑下面的算法来寻找第三小的元素 一个数组:
- 输入:
n, a[1..n]- 数字数组 a,n 是它的大小,n>=3 - 输出:- 返回第三小的数字
- 临时变量:
b[1..3], t, i
代码:
b[1] = a[1]
b[2] = a[2]
if b[1] > b[2] then t=b[1]; b[1]=b[2]; b[2]=t
b[3] = a[3]
if b[2] > b[3] then t=b[2]; b[2]=b[3]; b[3]=t
if b[1] > b[2] then t=b[1]; b[1]=b[2]; b[2]=t
for (i = 4; i <= n; i = i+1)
if a[i] < b[3] then b[3] = a[i]
if b[2] > b[3] then t=b[2]; b[2]=b[3]; b[3]=t
if b[1] > b[2] then t=b[1]; b[1]=b[2]; b[2]=t
return b[3]
【问题讨论】:
-
只有一个循环,没有嵌套,也没有其他函数调用或任何奇怪的东西。你怎么看?
-
你自己走了多远?
-
这个数据挖掘课程没有对算法先决条件的某种介绍吗?