程序员数学基础【二、时间复杂度】(Python版本)(上)

简介: 程序员数学基础【二、时间复杂度】(Python版本)(上)

测试使用语言:【Python】

由于此类语言入门非常容易,哪怕初中生亦可以,并且本科/研究生写论文、做实验多数所用语言都是【Python】故而选择此语言。


代码运行平台:【win10 x64】

代码环境安装:【https://blog.csdn.net/feng8403000/article/details/113784766

代码编码格式:【https://blog.csdn.net/feng8403000/article/details/113785344

完整的vs搭建并使用【Python】,非常简单,基础部分无需任何环境配置,工具自带即可。


一、时间频度:


一个算法花费的时间与算法中语句的执行次数成比例,哪个算法中语句执行的次数多,它花费时间就多。


一个算法中的语句执行次数称为语句频度或时间频度。记为T(n)。


在计算时间频度时,常数项和低次项可以忽略,因为随着n变大,时间频度会无限接近。


例如:从1++++++100的结果5050,利用等差数列公式计算的会飞快


微信图片_20220110201915.jpg


import time
#累计1至1亿的总和
start=1
end=100000000
#暴力运算
starttime = time.time()#开始
result=0
for x in range(start,end+1):
    result+=x
endtime = time.time()#结束
print("暴力运算结果:{0},消耗时间:{1}".format(result,(endtime - starttime)))
#等差数列
starttime1 = time.time()#开始
result1=end*(end+1)//2
endtime1 = time.time()#结束
print("等差数列求和公式结果:{0},消耗时间:{1}".format(result1,(endtime1 - starttime1)))


微信图片_20220110202027.png


分析:


循环从1-1亿一共1亿次,需要再判断一回才能退出。


算法2:result=(1+end)*end/2(这个是等差数列求和公式:(a1+an)*n/2)一步到位 T(n)=1


相关文章
|
7天前
|
Python
conda升级python版本
conda升级python版本
|
11天前
|
开发者 Python
six,一个神奇的 Python 版本兼容工具库!
six,一个神奇的 Python 版本兼容工具库!
23 4
|
11天前
|
Ubuntu Python
ubuntu升级Python版本
现在,你已成功升级了Python版本并可以使用新版本进行开发和运行程序。
29 1
|
21天前
|
Python
IDA3.12版本的python,依旧报错IDAPython: error executing init.py.No module named ‘impRefer to the message win
IDA3.12版本的python,依旧报错IDAPython: error executing init.py.No module named ‘impRefer to the message win
|
Java Python
Python基础 | 深浅拷贝问题、递归函数练习
在实际工作中,经常涉及到数据的传递,在数据传递使用过程中,可能会发生数据被修改的问题。为了防止数据被修改,就需要在传递一个副本,即使副本被修改,也不会影响原数据的使用。为了生成这个副本,就产生了拷贝。下面先了解一下几个概念:对象、可变类型、引用
216 0
Python基础 | 深浅拷贝问题、递归函数练习
|
Python
python——基础练习(五)
python——基础练习(五)
109 0
python——基础练习(五)
|
Python
python——基础练习(四)
python——基础练习(四)
117 0
python——基础练习(四)
|
Python
python——基础练习(三)
python——基础练习(三)
95 0
python——基础练习(三)
|
Python
python——基础练习(二)
python——基础练习(二)
103 0
python——基础练习(二)
|
Python
python——基础练习(一)
python——基础练习(一)
69 0
python——基础练习(一)