求程序段中++x或者x++的频度,时间复杂度、执行次数

news2025/1/12 18:50:15
  1. 以下程序段中"++x"的执行频度?

     频度就是执行次数
     for  i:=1 	to	n	then;
     	for	j:=1	to	n	then;
     			++x;
     i=1时	内圈for执行n次
     ...
     i=n时	内圈执行n次
    

    我的理解:外圈for从1到n,有效循环是n次,外圈每循环一次,内圈循环n次,一共就是n方次

  2. 以下程序段中"++x"的执行频度?

     for  i:=1 	to	n	then;
     	for	j:=1	to	i	then;
     		for	k:=1	to	j	then
     			++x;
    

    我的理解:直接上暴力列举,假设n=8

     	以下都是有效循环次数,不包含for最后不满足条件循环一次
     	i=1时	中间循环 1次	内圈for循环1次
     	i=2时	中间循环 2次	内圈for循环1+2次
     	i=3时	中间循环 3次	内圈for循环1+2+3次
     	i=4时	中间循环 4次	内圈for循环1+2+3+4次
     	规律出来了
    

    我详细说,i=3时,j从1到3,j可以为1,2,3,你可以不看中间for循环了几次,你只看j可以为哪几个值,分别j为1,2,3三种情况时内圈for是怎么在搞。当j为1时,k从1到1,循环一次,j为2时,k从1到2,循环两次,j为3时,k从1到3,循环了3次。所以i=3时,++x执行了1+2+3=6次,这只是一种情况

    i=n时,中间for从1到n,循环n次,这个n次表示内圈有n个数相加,
    因为中间for循环一次内圈就产生一个数,中间for循环了n次,内圈就产生n个数,这个n个数有规律的相加,就是从1+2+3+4+5+6+…+n

    根据上面的规律,1+1+2+1+2+3+1+2+3+4…+1+2+3+…+n这个求和公式n(n+1)(n+2)/6,时间复杂度就是O(n3)

  3. 求下列程序段的时间复杂度?

     for i:=2	to n	then
     	for	j:=2	to	i-1	then
     		++x
    

    我的理解:把n看成8时,2到8一共7次,也就是说外圈执行了n-1次

     i=2时	内圈不执行也就是0次
     i=3时	内圈执行1次
     i=4	内圈执行2次
     i=5	内圈执行3次
     ...
     i=n	内圈从2到n-1是多少次,举个例,n=8,2到8-1是多少次,6次,就是n-2
    

    从1+2+3+4+…+(n-2),求和公式再减掉2,时间复杂度取最高次幂,就是O(n^2)

  4. 以下程序段中"++x"的执行频度?

    x=0
    for  i:=1 	to	n	then;
    	for	j:=i	to	n	then;
    			++x;
    假设n为8
    外圈执行n次,说明结果是n个数相加
    i=1		内圈n次
    i=2		内圈n-1		#举例:2到8有7次嘛
    i=3		内圈n-2
    .......
    i=n-3	内圈4次
    i=n-2	内圈3次
    i=n-1	内圈2次
    i=n		内圈1次
    规律出来就是从1+2+3+4+...+n
    频度用公式就是[n(n+1)]/2
    
  5. 以下程序段中"++x"的执行频度?

     for  i:=n-1 	DOWNTO	1	do;
     	for	j:=1	to	i	do;
     			++x;
     设n=9,i就从8递减
     i=8	内圈执行8次
     i=7	内圈执行7次
     ...
     i=1	内圈执行1次
     规律就是从1+2+3+...+n-1
     		=[[n(n+1)]/2]-1
     时间复杂度取最高次幂就是O(n^2)
    
  6. 以下程序段中,每个语句执行次数?

     for  i:=n 	to	1	then; #语句一
     	x=x+1;	#语句二
     	for	j:=n	to	i	then;	#语三
     		y=y+1;	#语句四
    

    语句一:最外圈的for从n到1,执行n次,还要一次for不满足才能结束,所以是n+1次
    语句二:可以看成外圈for的有效循环次数,也就是执行了n次

     语句三:
     i=n时		总共执行2次	#1次有效,还要1次才能判断结束
     i=n-1时	总共执行3次	#2次有效,还要1次才能判断结束
     i=n-2时	总共执行4次	#3次有效,还要一次才能判断结束
     ....
     i=2时		总共执行n次	#n-1次有效循环	1次无效循环
     i=1时		总共执行n+1次	#n次有效循环,1次无效循环
     规律就是从2+3+4+5+....+n+n+1
    

    下图写复杂了,把末尾的1放最前面,就是求和公式+n,更简单,结果是对的
    请添加图片描述

     语句四:可以看作是不考虑内圈for的无效循环次数
     从1+2+3+...+n
     求和公式就出来了
    
  7. 求下列程序段i:=i*2的数量级?

     i:=1;	
     WHILE	i<n	DO
     	i:=i*2;
    

    我的理解:i的值为2,4,8,16,32,68…这些数都是以2为底的指数函数 换句话说就是问你2的几次方刚好大于n,logn就是这个意思,数量级是O(logn)

  8. 求下列程序段x=x+1的数量级?

     i=1;	
     while(i<n)
     	for(j=1;j<=n;j++)
     		x=x+1;
     	i=i*2;
    

    我的理解:while循序的数量级是logn,logn通俗说就代表i翻倍了多少次,假设n为64,则log64=6,log64代表while循环了6次。内圈的for执行n次,两个相乘就是x=x+1的数量级,结果为O(nlogn)

  9. 求下列程序段i=i/2的数量级?

     i=n*n;	
     while(i!=1)
     	i=i/2;
    

    我的理解:i这个数是n*n,i要除2除几次才等于1,例如64除2要除6次才等于1,这里i就等于64,把思路换一个,2要乘2乘多少次才等于64,乘6次才等于64,这个6次怎么表示,是不是log64,log64的意思就是2的几次方等于64,所以答案就是log64,可以表示为logn2,结果就是O(logn2)

  10. 求下列语句s的执行次数?

    for(i=1;i<n-1;i++)
    	for(j=n;j>=i;j--)
    		s;
    

    我的理解:假设n=5,外圈就执行了3次,写个通式就是n-2
    i=1 内圈for是5到1 5次
    i=2 内圈for是5到2 4次
    i=3 内圈for是5到3 3次
    实际上i的值从1到n-2都可以,只要比n-1小
    i=n-2时 内圈for从n到n-2,执行了3次。n算1次,n-1算1次,n-2算1次,一共3次,用通式表示就是n-(n-2)+1
    请添加图片描述
    外圈i有几个值,内圈for就执行几次,且for每次执行的次数不一样,把每个for执行的次数相加,就是s的执行次数,看上面求出来的规律式外圈i有3个值,s的执行次数就是3个数相加,那外圈执行次看图,是不是有从1到n-2个数,

    现在回到题目
    i=1		内圈执行n次
    i=2		内圈执行n-1
    i=3		内圈执行n-2
    ....
    i=n-3	内圈执行4次
    i=n-2	内圈执行3次
    规律就是从3+4+5+...+n,一共n-2个数,用求和公式-1-2得出结果为n^2+n-6/2
    
  11. 下面程序段的时间复杂度?

    sum=1;
    for(i=0;sum<n;i++)
    	sum=sum+1;
    

    我的理解:
    sum=1时进去循环一次,
    sum=2时进去循环一次,

    sum=n-1时进去循环一次
    sum=n时判断不满足条件,退出循环
    时间复杂度就是O(n)

  12. 下列语句y=y+i*j的执行次数?

    for(i=1;i<=n;i++)
    	if(2*i<=n)
    		for(j=2*i;j<=n;j++)
    			y=y+i*j
    

    穷举法

    if要满足条件,i的值只能为1到n/2
    i=1			j从2到n		执行n-1次	#举例:2到5是4个数
    i=2			j从4到n		执行n-3次
    i=3		 	j从6到n		执行n-5次
    ......
    i=(n-2)/2 	j从n-2到n	执行3次
    i=n/2		j从n到n		执行了1次
    

    规律就是从1+3+5+…+n-1 (首项+末项)*项数/2 结果为n^2/4

  13. 分析循环语句的执行次数?

    i=0;s=0;n=100;
    {
    	i++;
    	s=s+10*i
    }while(s<n)
    
    第一次:s=0+10*1=10	
    第二次:s=10+10*2=30
    第三次:s=30+10*3=60
    第四次:s=60+10*4=100
    

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/19582.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C语言源代码系列-管理系统之学生籍贯信息

往期文章分享点击跳转>《导航贴》- Unity手册&#xff0c;系统实战学习点击跳转>《导航贴》- Android手册&#xff0c;重温移动开发 &#x1f449;关于作者 众所周知&#xff0c;人生是一个漫长的流程&#xff0c;不断克服困难&#xff0c;不断反思前进的过程。在这个过…

Python 3.11新功能:错误信息回溯

错误信息回溯 长按关注《Python学研大本营》&#xff0c;加入读者群&#xff0c;分享更多精彩 扫码关注《Python学研大本营》&#xff0c;加入读者群&#xff0c;分享更多精彩 Python 3.11于2022 年 10 月 24 日发布。这个最新版本的 Python 速度更快&#xff0c;对用户更友好…

QT源码拾贝0-5(qimage和qpainter)

目录 0 qt源码查看方法 1. qimage.cpp中线程池使用方法 2. qpainter_p.h中SmallStack模板元结构体存放智能指针 3. qpainter.cpp的保存函数&#xff0c;状态对象赋值使用std::exchange函数 4. qpainter.cpp中获得类对象的方法 5. qpainter.cpp中QChar字节操作&…

代码随想录算法训练营三期 day 22 - 二叉树(8)

235. 二叉搜索树的最近公共祖先 原文链接&#xff1a;235. 二叉搜索树的最近公共祖先 题目链接&#xff1a;235. 二叉搜索树的最近公共祖先 在 有序树 里: 从上向下递归遍历&#xff0c;第一次遇到 curcurcur 结点的数值在 p,qp, qp,q 结点对应数值的闭区间中&#xff0c;那么…

内网渗透神器CobaltStrike之Beacon详解(三)

Beacon的种类 HTTP Beacon和HTTPS Beacon 这两个beacon的原理是通过发送http请求与受害主机通信来传达命令, 以此实现控制效果 优点是传输数据快, 缺点时隐蔽性差, 容易被防火墙或内网审计工具拦截 TCP Beacon 自CS4.0版本之后只有反向的TCP Beacon可用, 基于TCP协议的通信…

取证初级案例操作大纲

文章目录**取证初级案例操作大纲**1) 证据文件中有没有存在被删除的Doc文档&#xff1f;如果有的话&#xff0c;请导出并记录文件名及路径&#xff1a;2) 证据文件中有没有存在被删除的图片&#xff1f;如果有的话&#xff0c;请记录文件名及路径&#xff1a;3) 证据文件中哪几…

object类的一些方法

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 目录 前言 Object类 输出对象地址 object类里的tostring方法&#xff1a; 正确输出对象里内容 判断俩个对象大小&#xff1a; object类里的equlas方法&#xff1a; 自己实现一…

SpringCloud - 微服务理论基础

文章目录1.微服务架构1.1 什么是微服务1.2 Spring Cloud 简介1.3 Spring Cloud 技术栈2.Boot 和 Cloud 版本选型3.Cloud 服务升级1.微服务架构 1.1 什么是微服务 微服务架构是一种架构模式&#xff0c;它提倡单一应用程序划分成一组小的服务&#xff0c;服务直接相互协调、相互…

Python PyInstaller 打包成 Win、Mac 应用程序(app / exe)

一、简介 python 提供了几个用来打包的模块&#xff0c;主要有 py2app、py2exe、pyinstaller。附&#xff1a;pyinstaller、py2app、py2exe、fbs 对比与爬坑。 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-whT6cPog-1668880648443)(https://p1-jue…

(续)SSM整合之springmvc笔记(RESTful之HiddenHttpMethodFilter源码解析)(P147)了解

RESTful之HiddenHttpMethodFilter源码解析 由于浏览器只支持发送get和post方式的请求&#xff0c;那么该如何发送put和delete请求呢&#xff1f; SpringMVC 提供了 HiddenHttpMethodFilter 帮助我们将POST 请求转换为DELETE 或PUT 请求 HiddenHttpMethodFilter 处理put和delete…

java计算机毕业设计ssm陕理工图书馆管理系统

项目介绍 随着互联网技术的发发展,计算机技术广泛应用在人们的生活中,逐渐成为日常工作、生活不可或缺的工具,高校各种管理系统层出不穷。高校作为学习知识和技术的高等学府,信息技术更加的成熟,为高校图书馆借阅开发必要的系统,能够有效的提升管理效率。一直以来,高校图书馆一…

Docker搭建Redis集群

Docker搭建Redis集群 注意&#xff1a;Redis搭建集群最少需要6个Redis节点&#xff0c;其中3个作为主节点&#xff0c;3个作为从节点&#xff1b; 为了方便&#xff0c;这里用Docker在一台机器上启动6个容器来作为集群&#xff0c;生产上建议用多台服务器搭建&#xff1b; 创建…

4.1.3 名称的特殊处理

名称的特殊处理 类成员变量的名称处理&#xff1a; 对于类的数据成员&#xff0c;其的名称经过编译器的处理会在程序员定义名称的后面再加上class的名称&#xff0c;进而形成独一无二的命名&#xff0c;例如下面的的成员变量x再经过类处理后有可能为x_7Point3d。 class Point…

Linux之手把手教你捋清楚make和makefile

文章目录背景简单介绍make和makefile依赖关系和依赖方法项目清理以及伪目标背景 以往的C语言编程&#xff0c;我们一般都在一些像VS2019这样的集成开发环境(IDE)下编写&#xff0c;一个工程中的源文件不计其数&#xff0c;其按类型、功能、模块分别放在若干个目录中&#xff0…

Spring框架的概述及基本应用

Spring的基本应用 文章目录Spring的基本应用1. Spring 概述1.1 什么是Spring1.2 Spring 框架的优点1.3 Spring的体系结构2. Spring的核心容器2.1 BeanFactory2.2 ApplicationContext3. Spring的入门程序3.1 在pom下利用maven导入Spring所需要的jar包3.2 简单搭建起demo结构3.3 …

Java中数组的定义与使用(Java系列3)

目录 前言&#xff1a; 1.什么是数组 2.数组的创建 3.数组的初始化 4.数组的使用 5.数组是引用类型 6.基本类型变量与引用类型变量的区别 7.数组的应用 8.二维数组 结束语&#xff1a; 前言&#xff1a; 前面小编与大家分享了C语言与Java中的区别&#xff0c;还有一…

leaflet教程041: Point 和 LatLng 坐标互相转换

第041个 点击查看专栏目录 本示例的目的是介绍演示如何在vue+leaflet中使用Point和LatLng,这里做了两者之间的转换。 注意 两者转换后的值,返回相对于原点像素的相应像素坐标或经纬度坐标。zoom改变,原点(地图图层左上角的投影像素坐标)的值会改变,所以获得的值也会变化。…

51单片机学习笔记1 简介及开发环境

51单片机学习笔记1 简介及开发环境一、51单片机1. STC89C52单片机简介2. 命名规则3. 封装&#xff08;1&#xff09;PDIP&#xff08;2&#xff09;LQFP&#xff08;3&#xff09;PLCC&#xff08;4&#xff09;PQFP二、STC8051结构1. STC 8051 内部结构图2. 内部结构框图3. 单…

Android设置TabLayout熟悉及下划线宽度

Tablayout的使用 属性 app&#xff1a;tabMod 设置Tab模式 app&#xff1a;tabTextColor 设置文本颜色 app&#xff1a;tabSelectedTextColor 设置选中文本颜色 app:tabIndicatorColor 设置下滑条颜色 app:tabMaxWidth“xxdp” 设置最大的tab宽度 app:tabMinWidth“xxdp” 设置…

牛客网之SQL100题(7)-字符串截取、切割、删除、替换

知识点&#xff1a; &#xff08;1&#xff09;substring_indexsubstring_index(str,delim,count) str:要处理的字符串 delim:分隔符 count:计数 &#xff08;2&#xff09;切割、截取、删除、替换 1 2 3 4 5 6 7 8 9 10 11 12 13 14 select -- 替换法 replace(string, 被…