【算法】Day1-初识算法

一.基础概念

1.时间复杂度

时间复杂度是一个算法好坏的定义

常数时间的操作:
一个操作如果和数据量没有关系,每次都是固定时间内完成的操作,叫做常数操作。例如:数组寻址操作,加减乘除操作。

时间复杂度:
为一个算法流程中,常数操作数量的指标。常用 O(读作big O) 来表示。具体来说,在常数操作数量的表达式中,
只要高阶项,不要低阶项,也不要高阶项的系数,剩下的部分
如果记为f(N),那么时间复杂度为O(f(N))。

评价一个算法流程的好坏: 先看时间复杂度的指标,然后再分析不同数据样本下的实际运行时间,也就是常数项时间。

2.简单理解时间复杂度
例子1:
一个有序数组A,另一个无序数组B,请打印B中的所有不在A中的数,A数
组长度为N,B数组长度为M。
算法流程1:
  • 对于数组B中的每一个数,都在A中通过遍历的方式找一下;
  • O(M*N)
算法流程2:
  • 对于数组B中的每一个数,都在A中通过二分的方式找一下;
  • O(M*logN)
二分法:必须是排序好的序列,一
个长度是N的序列,每次分一半,可以分几次?
- O(log2(N))
算法流程3:
  • 先把数组B排序,然后用类似外排的方式打印所有在A中出现的数
  • O(M*logM)+O(M+N)
外排:把B排序然后两个序列从小到到比较。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值