算法学习之旅~

前言:鄙人为大数据专业的大一学生,接触代码的时日不多 实力非常有限,平常喜欢代码,足球 希望各位能够多多与我交流~

算法介绍:算法(Algorithm)是指解题方案的准确而完整的描述,是一系列解决问题的清晰指令,算法代表着用系统的方法描述解决问题的策略机制。也就是说,能够对一定规范的输入,在有限时间内获得所要求的输出。如果一个算法有缺陷,或不适合于某个问题,执行这个算法将不会解决这个问题。不同的算法可能用不同的时间、空间或效率来完成同样的任务。一个算法的优劣可以用空间复杂度与时间复杂度来衡量。

同时呢由于现在用户对于体验的要求增高,大部分企业都采取空间换时间的方式
空间复杂度和时间复杂度比较好理解 本人主要介绍时间复杂度的估算方法与效率排序…
这里可
接下来 让我们来看看如何分析时间复杂度

print('hello world')

俗话说学习一个东西重hello world 开始
由这串代码可以知道 打印出来的东西就是一个hello world
那么其就是一个O(1)的时间复杂度

for i in range(n):
  print('hello world')

那么很容易我们可以知道这串玩意的时间复杂度是O(n)

for i in range(n):
 for j in range(n):
  print('hello world')

同理我们也可以知道这串代码的时间复杂度是O(n**2)
那么我已经简单的了解到上面的时间复杂度的大致计算,接下来让我们看看以下的代码~

print('hello world')
print('hello suanfa')
print('hello python')
for j in range(n):
    print('hello world')
    for i in range(n):
     print('hello world')

这串代码的时间复杂度相信不少同学认为其时间复杂度是O(3)和O(n**2+n)
敲黑板

这样算就错了 事实上 两串代码的时间复杂度分别为O(1)与O(n**2)
因为呢 只要你没有打印太多次,其实对于计算的影响是十分小的,小到甚至可以忽略不记(手动滑稽)

while n >1:
  print(n)
  n=n//2

当n=64时输出:
64
32
16
8
4
2

我们不难发现上面的联系 不断的减半输出
2**6=64
同时写成数学的方式就是log 64 =6
底数是2 (底数写不出来) 手动流泪…
那么我们就可以将时间复杂度简单的写成O(logn)
那么问题来了
如何简单快速的判断时间复杂度

  1. 快速判断时间复杂度(适用绝大多数的简单情况):
    1 . 确定问题规模
    2.循环减半的过程:logn
    3.k层关于n的循环 n**k
    复杂情况:根据算法执行过程判断
    凡是看到循环减半的过程肯定会出现关于logn的时间复杂度
    其中k层关于n的循环 主要是for循环吧…
    看有几层for 这样比较好判断写趴…
    下一章开始讲递归…
    本人qq:2275966457
    欢迎广大道友与我交流学习~
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值