1. 问题
  2. 策略
  3. 算法
    3.1 输入
    3.2 输出
    3.3 步骤
  4. 分析
    4.1 正确性
    4.2 时间和空间
    4.3 最优性
  5. 实验
  6. 验证

例:在一个无序数组中搜索

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根本不在阵列中时,最坏的情况会发生

算法的其他分析:

  • 平均-行为-分析
  • 优化
  • 正确性
最后修改:2022 年 04 月 16 日
如果觉得我的文章对你有用,请随意赞赏