初识算法(时间复杂度)

本文介绍了算法的概念,强调其在解决问题中的重要性。文章探讨了如何选择最佳算法,提出了事后统计法和事前分析法,并重点讲解了通过大O阶方法分析算法时间复杂度的步骤。此外,还列举了不同时间复杂度级别的比较,并提供了实战分析中的求解套路,包括for循环、多层嵌套和while条件式。文章最后提到了分析算法所需的数列和对数等数学基础知识。
摘要由CSDN通过智能技术生成

一、什么是算法?

算法不是特指高大上的数学公式,指的是解决问题的思路方法。生活中处处是算法。

为什么很多算法都会用到数学公式呢?因为这些公式可以减少计算机的运算步骤,锦上添花。

 

二、有时候一个问题有多种解决思路(多种算法),如何选择出最好的那个呢?

好的算法一般“计算步骤少”+“空间损耗低”+“内外存交互少”;因为用户关注的是快速,所以大家一般只考虑时间复杂度。时间空间大部分时候是冲突的,所以还会用空间换时间。

1)事后统计法:

造测试数据,模拟环境,运行一段时间看看效果,就能找到最好的算法。但是太浪费精力了,吃力不讨好,不是必要不建议使用这种方法。

2)事前分析法:

估算各个算法的运算步骤的数量级(时间复杂度),选一个较优的,这样选出来的算法可能不是最好的,但也不会太差。上线后,如果允许,可以再优化算法找出最优的。

有时候不同的区间算法的性能不同,所以最优的结果可能是多种算法动态并存。

 

三、如何分析一个算法的时间复杂度呢?(主要看递归循环什么的)

大O阶方法:

1、先得到运算步骤的数学公式

2、用常数1取代运行中所有的加法常数

3、只保留公式中最高阶项部分

4、去除最高阶项想乘的常数

根据算法的思想也可以一步估算出时间复杂度

各种常见时间复杂度耗费时间大小顺序:常数阶O(1) < 对数阶O(logn) &l

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值