- 问题
- 策略
- 算法
3.1 输入
3.2 输出
3.3 步骤 - 分析
4.1 正确性
4.2 时间和空间
4.3 最优性 - 实验
- 验证
例:在一个无序数组中搜索
1. 问题
E是一个包含n个条目的数组,E[0],····,E[n-1] 不按特定顺序排序
找到一个指定键的索引K,如果K在数组里
如果K不在数组里返回-1
2. 策略
依次将K与每个条目进行比较,直到找到一个匹配的条目或者数组每个成员都被找过
如果K不在数组中,该算法返回-1作为其答案。
3. 算法
3.1 输入
E,n,K,其中E是一个有n个条目的数组(索引为0,...,n-1),K是要寻找的。假设E n K都是整数
3.2 输出
如果找到,返回答案,K在数组中的位置
如果没找到,返回-1
3.3 步骤
int seqSearch(int[] E, int n, int K)
int ans, index;
ans = -1; // Assume failure.
for (index = 0; index < n; index++)
if (K == E[index])
ans = index; // Success!
break; // Done!
return ans;
4. 分析
最坏情况分析
W(n)是一个函数。W(n)是指算法在任何情况下进行的最大数量
对于我们的例子,显然W(n)=n
最坏的情况是,当K只出现在数组的最后一个位置时 以及K根本不在阵列中时,最坏的情况会发生
算法的其他分析:
- 平均-行为-分析
- 优化
- 正确性