循环不变式是干嘛的?
用于帮助理解算法的正确性。
循环不变式的三个性质:
- 初始化:在循环开始前的第一轮迭代式正确的
- 保持:在循环中,如果在某轮迭代开始之前是正确的,那么在在下一次迭代之前,它也是正确的
- 终止:在循环结束后,它还是正确的。
以归并排序为例:
初始化:把每个单独元素作为一个列表,这个列表一定是有序的。
保持:选取两个有序列表,进行合并,合并之后还是有序的
终止:当只有1个列表的时候退出,那么这个列表一定是有序的。
循环不变式就是帮助我们来理解算法是否正确。