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

  • 相关阅读:
    在终端聊天
    Vue双向数据绑定的原理
    手动封装on,emit,off
    浅谈Vue中组件传值的几种方式
    常见的一些性能优化的小方法
    常见的一些JS兼容问题
    移动布局的方法
    移动布局的方法
    快速、高效的学习vuex
    移动端300ms延迟原因及解决方案
  • 原文地址:https://www.cnblogs.com/zuofaqi/p/9677610.html
Copyright © 2011-2022 走看看