码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 扎实打牢数据结构算法根基,从此不怕算法面试系列之006 week01 02-06 循环不变量


    循环不变量

    1、循环开始时需要做什么?

    之前我们讲的线性查找法的核心代码如下:

    public static  int search(E [] data,E target){
        for (int i = 0; i < data.length; i++)
            if (data[i].equals(target))
                return i;
        return -1;
    }
    

    我们是否有思考过,这样一个简单的查找算法,用到了循环,但是每一轮循环开始前,需要满足的条件是什么?

    mark

    mark

    其实,循环开始时,需要确认:
    确认data[i]是否是目标
    通过语句,if (data[i].equals(target))判断

    循环体执行完一次时:
    我们确认了data[i]不是目标,换句话,即:data[0…i]中没有找到目标。

    mark

    注:方括号[]表示的时闭区间,圆括号()表示的是开区间。
    闭区间包含开闭的元素,开区间不包含开闭的元素。
    也可以半开半闭,即:(],或者[)。
    即:data[0…i],也可以表示为data[0…i-1)

    2、什么是循环不变量?

    什么是循环不变量呢?
    循环不变量定义:即每一轮循环开始时,循环都满足的性质或者条件。

    mark

    3、循环不变量的作用

    循环不变量的作用,其实如定义所讲,帮助我们厘清每一轮循环开始时循环所处的条件。有助于厘清算法实现的思路。
    mark

    在循环中,循环体的作用,就是维持循环不变量。

    循环体和循环不变量的关系,本身也是”证明“算法正确性的一种方式。
    这里的”证明“用了引号,因为并不是严谨的数学证明。

    mark

    其实,每次循环开始时,满足一个条件,
    即:data[0……i-1]中没有找到目标。

    总结重点:
    写出正确的代码,需要定义清楚循环不变量,循环体的作用就是为了维持循环不变量。

    mark

  • 相关阅读:
    springboot注解之@ConfigurationProperties注解
    Go命令行参数 os和flag
    C# 泛型详解(泛型类,方法,接口,委托,约束,反射 )
    E2-AEN: End-to-End Incremental Learning with Adaptively Expandable Network
    【代码随想录】算法训练营 第十六天 第六章 二叉树 Part 3
    HarmonyOS NEXT应用开发—在Native侧实现进度通知功能
    131.【MySQL_基础篇】
    一种基于形态学的权重自适应周期性噪声去除方法-含Matlab代码
    Elasticsearch-基础介绍及索引原理分析
    NVRadar:一种实时的雷达障碍检测和占位栅格预测方法
  • 原文地址:https://www.cnblogs.com/xlfcjx/p/17328038.html
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号