THU_数据结构_学习笔记(3)

数据结构,邓俊辉老师
平台——学堂在线 https://www.xuetangx.com/course/THU08091000384/5883586?channel=learn_title

能够成为像呼吸一样对人而言的一种本能
—— 对大数学家欧拉称赞

剖析算法的两大任务

两个任务 = 正确性 + 复杂度
自:什么是正确性?—— 见本笔记后文

一种事实:
C++等高级语言的基本指令,均等效于常数条RAM的基本指令;在渐进意义下,高级语言的基本指令与RAM的基本指令数,可理解为等价

算法的灵魂,分支转向,goto

级数求和的能力+ 递归跟踪 + 猜测和验证

分解能力一:级数求和

代码复杂度,思维上对应矩形的面积

算数级数
最基本形式,算数级数
从某个数开始,以固定间隔为单位,不断线性递增
在这里插入图片描述
幂方级数
对于任何一个幂方次,无论2,3,4,5,我们都在算数级数基础上变成2次方,2三次方,2的四次方等等
在大O意义下,我们可以归纳
幂方级数的总和,应该比幂的次项高出一阶
在这里插入图片描述+准确分析,幂方级数求和转化为0到n之间x的d次方的积分

几何级数
位数呈现几何式的增长,用大O记号渐近意义下,与级数末项同阶
在这里插入图片描述
自己思路:这里很好理解,也是“去粗存精”式的一种估算

收敛级数
每一项收敛足够快,总和不超过某一个上界
上界从渐近意义上讲,都可以视作为常数,从大O记号角度看,都可以记作O(1)
在这里插入图片描述
+问题,这类级数有必要讨论吗?
几何分布的一种情况
同样存在常数上界,大O记号下记作O(1)
在这里插入图片描述
+自己问题,认为描述几何分布级数求和应该为(1-lambda)(1+lanmbda^1 + lambda^2 + lambda^3+…)

+重点,调和级数和对数级数
这两种级数,后面会经常遇到在这里插入图片描述
调和级数,它的界可以估计为logn,是确界
对数级数,对数的和=乘积的对数,渐进为nlogn

循环

具体实例1与2

二重循环,两个控制变量相互之间没有耦合
外循环要求内循环反复迭代n趟
+记忆,直观反馈,二维矩形
i和j两个控制变量,构成两个维度,矩形中每一个点,都对应于内部o1operation(i,j)操作的一次执行

具体实例2
与上述渐近阶次相等
在这里插入图片描述

具体实例3与4

内部循环j增长步长更大
依然构成算术级数,而我们在头脑里构成二维图景
因为步长更大,每一趟内循环长度缩减到 j/2013

具体实例4
外层循环不是线性增长,而是左移一位,每次乘以2
换而言之,内循环的长度i,将以2为倍数呈现出几何级数的形式
在这里插入图片描述

实例,取非极端元素 和 起泡排序

对于任何整数子集S,元素互异
找出一个元素a,既不是最大的又不是最小的
算法:从s中任取三个元素x,y,z,
—— 无论输入规模n有多大,算法的执行时间为一个固定不变的常数

一个算法正确性的证明

更一般的例子,起泡排序
给定n个对象,这里简化为整数,将它们按序排列
事实:任何序列中,任意/总有一对相邻元素顺序/逆序
策略:扫描交换
整个过程,可以精确描述成下方代码

在这里插入图片描述
典型的二重循环模式
外层,逐行扫描交换,直至完全有序
内层,逐对检查A[o, n)内各相邻元素

  • 不变性:经过k轮扫描交换后,最大的k个元素必然就位
  • 单调性:经过k轮扫描交换后,问题规模缩减至n-k
  • 不变形与单调性推出——> 正确性:经至多n趟扫描后,算法必然终止,且能给出正确解答

+老师寄语,
学会在其他场合,运用不变形和单调性——> 正确性的方法

+了解

  • 费米 Enrico Fermi 1901-1954 测定原子弹爆炸当量时,只用了一张纸(延申,当量表示产生同样能量所需的TNT炸药的重量
  • 埃拉托斯特尼 Eratosthenes 276~194
    B.C. 得到早期测量地球周长的最准确结果

+老师寄语

抓住问题的主要方面
从而简洁得出问题总体规律,很自然运用到其他分析中

建立封底估算概念

1天 = 24h* 60min * 60sec 约为25 * 4000 = 10^5sec
1生 以1世纪算 = 100yr * 365 = 3* 10^4 day = 3* 10^9 sec
三生三世 = 300yr = 10^10
+概念建立,在三生三世中的一天,相当于一天中的一秒
宇宙大爆炸至今 = 10^21

改进算法的重要性在这里插入图片描述

MergeSort的时间复杂度为nlog(n)
因此,使用MergeSort对算法进行改进,一个10^9数量级的问题可以使用普通PC机在30秒解决


迭代与递归,见后续课程笔记

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值