什么是算法

本文介绍了算法的概念,重点讲解了如何通过时间复杂度评估算法的效率,列举了多个示例,如累加法、等差数列求和、循环结构中的时间复杂度计算,展示了O(n)、O(n^2)、O(logn)和O(√n)等不同复杂度的实例。
摘要由CSDN通过智能技术生成

1.算法就是解决问题的方法

2.例:1+2+3+4+5……+1000

(1).累加法:一个一个的加

(2).利用等差数列求和公式直接算出答案

3.如何判别算法的优劣?

(1).通过时间复杂度来进行判别

4.算法的时间复杂度是如何计算出来的?(重点)

(1).时间复杂度是研究数据总量x和算法执行次数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)

例子:

void fun(int n){
     int i = 1;
     while (i<n){
      i = i*2;
         }
         }

时间复杂度是研究:数据总量n和执行次数y之间的关系

第一轮:i = 1

第二轮:i = 2

第三轮:i = 4

第四轮:i = 8

第五轮:i = 16

…………

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

2^y = n ————>y = log2n

答:o(logn)

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

时间复杂度是研究:数据总量n和执行次数y之间的关系

第一轮:i = 0

第二轮:i = 1

第三轮:i = 2

第四轮:i = 3

第五轮:i = 4

…………

第y轮: i = (y-1)

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

        y^3 = n 

       y = n^1/3

答:O(³√n)

x = 2;
while(x<n/2){
x = x * 2;
}

第一轮:x = 2

第二轮:x = 4

第三轮:x = 8

第四轮:x = 16

第五轮:x = 32

…………

第y轮: x = 2^y

2^y = n——>y = log₂n

答:O(logn)

    x = 0;
while (n>(x+1)*(x+1)){
    x = x + 1;
        }

第一轮:x = 0

第二轮:x = 1

第三轮:x = 2

第四轮:x = 3

第五轮:x = 4

…………

第y轮: x = y - 1

y*y = n——>y^2= n ——>y = √n——O(√n)

答:O(√n)

  • 45
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值