CSP考试复习:第一单元 C++语言基础 1.9简单的算法分析和优化 1.10 代码编辑器

本文介绍了CSP考试中C++语言基础部分的算法分析和优化,包括时间复杂度、空间复杂度的概念,以及简单的优化方法。强调了时间复杂度的重要性,并给出了常用算法的时间和空间复杂度比较。同时,提到了代码编辑器的选择,推荐了适用于学习信息学的IDE和编辑器。
摘要由CSDN通过智能技术生成

1.9简单的算法分析和优化

(1) 复杂度

为了描述一个算法的优劣,我们引入算法时间复杂度和空间复杂度的概念。
时间复杂度:一个算法主要运算的次数,用大 O 表示。通常表示时间复杂度时,我们只保留数量级最大的项,并忽略该项的系数。
当然,如果有多个字母对算法的运行时间产生很大影响,就把它们都写进表达式。如对 m×n 的数组遍历
的时间复杂度可以写作 O(mn)。
空间复杂度:一个算法主要占用的内存空间,也用大 O 表示。
在实际应用时,空间的占用是需要特别注意的问题。太大的数组经常是开不出来的,即使开出来了,遍历的时间消耗也是惊人的。

(2) 常用算法的时空复杂度

1s 运算次数约为 5,000,000①。也就是说,如果把 n 代入复杂度的表达式,得数接近或大于 5,000,000,
那么会有超时的危险。
常见的数量级大小:O(1)<O(logn)<O(n)<O(nlogn)<O(n的二次方)<O(n的三次方)<O(2n)<O(n!)

(3) 简单的优化方法

1. 时间的简单优化方法
时间上的优化在于少做运算、做耗时短的运算等。有几个规律需要注意:
 整型运算耗时远低于实型运算耗时。
 位运算速度极快。
 逻辑运算比四则运算快。
 +、-、*运算都比较快(-、*比+慢一点点,可以忽略不计)。
 /运算比+、-、*慢得多(甚至慢几十倍)。
 取余%和除法运算速度相当。
 调用函数要比直接计算慢(因为要入栈和出栈)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值