什么是算法

本文介绍了如何通过时间复杂度来评判算法的效率,详细解释了线性时间复杂度(O(n))、二次时间复杂度(O(n^2))、常数时间复杂度(O(1))以及对数时间复杂度(O(logn))的计算方法,并给出了几个实际例子进行说明。
摘要由CSDN通过智能技术生成

(解决问题的方法)

用来描述如何进行数据处理,计算等操作,然后解决问题的方法叫做算法。

如何评判算法的优劣 :

通过时间复杂度进行判断。


时间复杂度是如何进行计算的:

时间复杂度:研究数据总量N和算法执行次数Y之间的关系-----

y = an+b (a是系数,b是常数)如果n非常大-------y = n(算法执行次数和数据总量直接关系)---O(n)

y = an^2+bn+c(ab是系数,c是常数)   如果n非常大------y=n^2(算法执行次数和数据总量的平方直接关系)----O(n^2)

y = a (a是常数)算法的执行次数和数据总量没有关系----O(1)

y = logn(算法的执行次数和数据总量有log的关系)-------O(logn)

例: 

word fun(int n){
 
        int = 1;
 
        while(i < n){
 
                i ++;
 
                }
 
                }

第一轮:i= 1

第二轮:i= 2

第三轮:i= 4

第四轮:i= 8

......

第y轮:i= 2^(y-1) = n

2^y = n-------y = log2n

所以时间复杂度为O=(logn)

例:

word fun(int n){
 
        int = 0;
 
        while(i*i*i < n){
 
                i ++;
 
                }
 
                }

第一轮:i= 0

第二轮:i = 1

第三轮:i = 2

第四轮:i= 3

第y轮:i= (y - 1)

(y - 1)*(y - 1)*(y - 1) = n

y^3 = n

y = n^1/3

所以时间复杂度为:O(n^1/3)

例:

X = 2:

while(x<n/2){

x = x * 2;

}

第一轮:2

第二轮:4

第三轮:8

第四轮:16

第y轮:x = 2^y

y = log2n

所以时间复杂度为log2n

例:

i= 1;k = 0

while(i<n-1);{

i++

}

第一轮:i= 1

第二轮:i= 2

第三轮:i=3

第y轮:i= y

y=n-1

所以时间复杂度为:O(n)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值