浙大数据结构(1)

文章介绍了数据结构的基本概念,它是组织和存储数据以优化算法效率的方法。同时,讨论了算法的选择标准,重点关注了空间复杂度(S(n))和时间复杂度(T(n))对程序性能的影响。通过递归与循环的比较,说明了如何分析算法的效率,并提出了好的算法应关注最坏情况和平均情况的复杂度。
摘要由CSDN通过智能技术生成

开始学习数据结构(拖了好久终于开干了)

来自【浙江大学】数据结构(合149讲)陈越 何钦铭
Be a Fighter and Keep Fighting!!!


数据结构(data structure)定义

是计算机中存储,组织数据的方法。通常情况下,精心选择的数据结构可以带来最有效率的算法。

解决问题的效率跟 数据的组织方式, 跟空间的利用率, 算法的巧妙程度有关。

算法(algorithm)定义

  • 一个有限指令集
  • 接收一些输入(有些情况下不需要输入)
  • 产生输出
  • 一定在有限步骤之后终止
  • 每一条命令必须:
    • 有充分明确的目标,不可以有歧义
    • 计算机能处理的范围内
    • 描述应不依赖于任何一种计算机语言以及具体的实现手段

怎样选择算法

  • **空间复杂度S(n) 一 根据算法写成的程序在执行时占用存储单元的长度。**这个长度往往与输入数据的规模有关。空间复杂度过高的算法可能导致使用的内存超限,造成程序非正常中断。

  • **时间复杂度T(n) 一 根据算法写成的程序在执行时耗费时间的长度。**这个长度往往也与输入数据的规模有关。时间复杂度过高的低效算法可能导致我们在有生之年都等不到运行结果。

空间复杂度例子:

比如下面这个递归实现的函数,如果N特别大,那么每次调用的PrintN都会先把所有东西存在内存,然后等下个执行,这样会导致很容易就吃完了内存,最后直接终止掉了,而通过普通循环实现函数,无论N多大始终只有一个函数,所以没问题。

space

时间复杂度例子:

下面是两个多项式求和公式f(x)=a0+a1X+a2X^2+a3X^3+....a(n-1)X^(n-1)+anX^n

在运算中,加减法的速度远快于乘除法,所以下面的程序我们关注乘法,第一个程序中每次for循环都会执行(pow函数执行i-1次乘法,a[i]执行一次)i次乘法,所以总的次数为(n+1)n/2次乘法,而第二种每次for循环只执行一次乘法,所以总共n次,这样就可以知道第二种方法在N很大时候耗时更少,在时间复杂度上占优。

2

什么是好的算法:

分析一般算法效率时关注:

  • 最坏情况复杂度Tworst(n)
  • 平均复杂度Tavg(n)
  • Tavg(n)<=Tworst(n)
复杂度的渐进表示法:

12
3
45
6

TO BE CONTINUED…

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值