数据结构与算法学习之算法入门笔记

计算

关于计算:

对象:规律、技巧。

目标:高效、低耗。

Computer science ------ Computing science

算法:特定计算模型下,旨在解决特定问题的指令序列。

输入、输出、正确性、确定性、可行性、有穷性。

Hailstone序列目前无法证明有穷性或无穷性。
程序 不等于 算法 死循环~~有穷性

好算法:正确?健壮?可读?效率!!!速度尽可能快,存储空间尽可能少。(既要马儿少吃草,又要马儿快快跑!)

Algorithm + Data Structures = Programs

图灵机


图灵机(Turing Machine):
邓俊辉先生的课堂
邓俊辉先生的课堂

RAM


Random Access Machine (RAM)
寄存器顺序编号,总数没有限制。
每一基本操作仅需常数时间。
与TM模型一样,RAM模型也是一般计算工具的简化与抽象。

算法运行时间 可转化为 算法需要执行的基本操作次数。(这样可以不用考虑硬件环境)

big-O notation


在这里插入图片描述 在这里插入图片描述

在这里插入图片描述

大O记号 不求甚解,即眼光长远,不拘细节

常系数可忽略,低次项可忽略。

常数复杂度 constant function O(1) 甚至2013^2013 也等于 O(1)。
不含转向(循环、调用、递归)的顺序执行代码往往是O(1),但有时含循环、调用、递归由于存在特殊情况,所以也可能是O(1)的。
对数O(log n) 对底数无所谓,可通过换底公式证明;对常数次幂无所谓,因为完全可以提到系数上,而常数可忽略;对数本身也可以是多项式形式(ploy-log function),此时可忽略低次项。
多项式复杂度O(n^c) 多项式中只关心最高项,并忽略常系数。
其中比较特殊的是:线性复杂度O(n):linear function
然后比较重要也比较常见的是介于O(n)与O(n^2)之间的复杂度,
指数复杂度O(2^n):exponential function 往往是不可忍受的。

CPU 目前大概是1s 9次方的运算。
而1天大概为 10的五次方秒;
一生用一世纪来估算,大概3* 10^4 days 即 3* 10 ^9秒;
三生三世 大概是300年 估算10 ^10秒;
所以在三生三世中的一天 相当于 一天中的一秒。
现在估计宇宙大爆炸至今约为10 ^21秒
1000秒大概 20分钟
归并排序MergeSort是 n* log(n)的复杂度

要抓住问题的主要方面!
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值