Consider the searching problem:
Input: A sequence of n numbers A=〈a1,a2,...,an〉 and a value v.
Output: An index ii such that v=Aior the special value NIL if v does not appear in A.
Write pseudocode for linear search, which scans through the sequence, looking for v. Using a loop invariant, prove that your algorithm is correct. Make sure that your loop invariant fulfills the three necessary properties.
Pseudocode for LINEAR-SEARCH(A, v)
for i = 1 to A.length
if A[i] == v
return i
return NIL
At the start of the each iteration of the for loop of lines 1-3, the subarray A[1..i−1]A[1..i−1] consists of the elements that are not equal to v.
搜索匹配问题的解释及解答,详细见算法导论之2.1.3,关于算法的
- 初始性
- 保持性
- 结束性
的具体证明及思考,可以参见算法导论一书