zoukankan      html  css  js  c++  java
  • 循环不变式

    考虑上一篇的插入排序,在for循环的每次迭代开始,包含元素A[0...i-1]的子数组是当前排序好的,剩余的数组元素A[i...arrlen]是仍未排序的。我们把A[0...i-1]的这个性质称为一个循环不变式 

    循环不变式(loop invariants)不只是一种计算机科学的思想,准确地说是一种数学思想。在数学上阐述了通过循环(迭代、递归)去计算一个累计的目标值的正确性, 属于基础数学的范畴,类似与数学归纳法。

    循环不变式主要帮助我们理解算法的正确性。关于循环不变式,我们需要证明三条性质:

    1. 初始化: 循环第一次迭代之前,为真

    2. 保持: 如果循环某次迭代之前它为真,那么下次迭代之前它仍为真

    3. 终止: 如果程序可以在某种条件下终止,那么在终止的时候,就可以得到自己想要的正确结果

    我们可以看到,插入排序的循环不变式(在for循环的每次迭代开始,包含元素A[0...i-1]的子数组是当前排序好的,剩余的数组元素A[i...arrlen]是仍未排序的)是满足这三个性质的。

  • 相关阅读:
    20201016---不做清单
    20201014--增删改查
    20201013--什么是真实的自己?
    多态
    继承
    关键字
    分类思想
    常用的linux命令
    九九乘法表
    稀疏数组
  • 原文地址:https://www.cnblogs.com/zuofaqi/p/9677610.html
Copyright © 2011-2022 走看看