我正在为介绍数据挖掘课程做作业。我想弄清楚算法的时间复杂度(见下文)?它是线性/指数/对数/二次/多项式吗?任何有关如何处理此类问题的提示将不胜感激
考虑以下用于查找数组中第三小的元素的算法:
- 输入:
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]