算法
- 取 某个值或某个值的集合 作为 输入
- 产生 某个值或某个值的集合 作为 输出
将输入转化成输出的计算步骤的一个序列
按照这个定义先有问题的形式化描述:
输入:
输出:
形式化描述
举例:leetcode两数之和
给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个
整数,并返回它们的数组下标。
输入:n个数的一个序列nums=<a1, a2, … , an> 和一个值target
输出:下标集合(i, j),使得target = nums[i]+nums[j] 或者当不存在这样集合时,集合为NIL
循环不变式
- 初始化:循环的第一次迭代前(循环头的第一次测试开始之前)为True
- 保持:if 循环的某次迭代前为True,then 下次迭代前仍为True
- 终止:循环终止,不变式将提供一个有用的性质,该性质证明算法的正确性
循环不变式与数学归纳法
如果给定一系列命题, A s A_s As, A s + 1 A_{s+1} As+1, A s + 2 A_{s+2} As+2,…