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]是仍未排序的)是满足这三个性质的。

  • 相关阅读:
    ios状态栏
    RGBA设置颜色
    应用程序的生命周期(转)
    UIViewController的生命周期
    UIViewController的创建
    UIButton
    NSUserDefaults
    打印结构体
    iOS 界面间的传值 属性传值 代理传值
    如何安装Homebrew
  • 原文地址:https://www.cnblogs.com/zuofaqi/p/9677610.html
Copyright © 2011-2022 走看看