数据结构与算法基础: 算法特征、时间复杂度、空间复杂度、大O表示法、抽象数据类型等概念

题记

	算法之于真正的程序员来说,其重要性无需多言。我们听过无数的声音“算法工作中几乎用不到,都是应付面试”,“面试造航母,工作拧螺丝”诸如此类,云云。
	但是,我认为对于真正的程序员来说,算法如兵法,是必须攻克的“高地”。

一、算法

1.算法的5大特征
  • 1.输入: 算法具有0个或多个输入
  • 2.输出: 算法至少有1个或多个输出
  • 3.有穷性: 算法在有限的步骤之后会自动结束而不会无限循环,并且每一个步骤可以在可接受的时间内完成
  • 4.确定性:算法中的每一步都有确定的含义,不会出现二义性
  • 5.可行性:算法的每一步都是可行的,也就是说每一步都能够执行有限的次数完成
2.算法的目的
  • 更快(运行)
  • 更省(空间)
3.衡量算法优劣的方式 – 时间、空间复杂度分析
  • 1.事后统计法(真实的运行代码,统计、监控得到时间和内存占用):受硬件条件影响较大,受数据规模影响很大,单纯比较时间并无意义;
  • 2.大 O 复杂度表示法 (不用具体的测试数据来测试,就可以粗略地估计算法的执行效率的方法)

我们假定计算机执行算法每一个基本操作的时间是固定的一个时间单位,那么有多少个基本操作就代表会花费多少时间单位。显然对于不同的机器环境而言,确切的单位时间是不同的,但是对于算法进行多少个基本操作(即花费多少时间单位)在规模数量级上却是相同

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值