邓俊辉数据结构学习-0-绪论

邓俊辉数据结构学习笔记

绪论

知识储备

  1. 离散数学基础
  2. 概率基础

    如何评价一个算法

    渐进分析:大O记号

    问题:随着规模的增长,计算成本如何增长?

    这里关系的是足够大的问题。

即当 n >> 2的时候

需执行的基本操作次数:T(n) = ?

需占用的存储单元数:S(n) = ? // 有时候,不考虑,为什么? 目前还不明白

估算能力大成: 像呼吸一样估算。

算法分析的俩个任务

  1. 正确性
  2. 复杂度

复杂度分析方法

迭代:级数求和

递归:递归跟踪 + 递推方程

猜测 + 验证

如何进行算法复杂度分析

一般采用时间复杂度T(n)的方式来评价一个算法,且一般为平均和最坏???

迭代和递归

所谓迭代,就是for循环里套for循环的意思。

递归的本质就是自身调用

迭代乃人工,递归方神通。

辩证看待:

迭代效率往往在效率上高于递归。所以在一开始需要将迭代转递归,然后学习一段时间后
再递归转迭代。

分治。思想:将大问题转换为小问题。

tips

算法复杂度, 一般指的是时间复杂度。

空间复杂度有两种说法,倾向于这种: 我们一般不考虑输入所占用的空间,仅仅是考虑在算法本身中
借用的空间。

example

int sumI(int a[] , int n)
{
    int sum = 0;
    for(int i = 0; i<n ; ++i)
    {
        sum += a[i];
    }
    return sum;
}

我们将n看做这个问题的规模,每当我们执行完for循环中的一次op时,规模就会减1。
这种不断蚕食的方法就是动态规划

动态规划

问题: 动态规划和递归的区别?

动态规划就是讲一个问题使用递归找出算法的本质,然后将其转化为迭代的形式。

前半部分就是make it work, make it right. 后半部分就是 make it fast。

总结精华

  1. 对于我来说,仔细研究算法的复杂度没有任何意义。计算也不是我需要做的事情。我要明白的是算法
    复杂度之间的比较。
    1. 可以参照算法复杂度的图进行比较。
    2. O(1) > O(log N) > O( n.exp(c)) 前面都是可以接受的,一旦算法的复杂度达到指数级别。就是不可以接受和使用的
    3. 扩展问题,这是一个在算法竞赛中np问题和npc问题的区别。
  2. 常见的俩种分析问题策略
    1. 减而治之
      • 核心思想是将n规模的问题分解为 n-1 规模的问题和 一个平凡问题(即常识时间可解问题)。
    2. 分而治之
      • 核心思想是将n规模的问题划分为多个子规模问题。采取多路递归的方式进行问题的求解。
  3. 递归的一些基础概念
    1. 递归基
    2. 多向递归和多路递归的区别
    3. 什么是尾递归, 尾递归如何转为迭代

Tips
很重要的一个tips,对于任何形式的数组问题,我们喜欢使用左闭右开的方式进行处理
即假设数组的大小是n,左边第一个元素是0,末尾原始是n-1,我们喜欢将n虚拟出来。即
可以当做哨兵。在进行逻辑思考时,也很方便。
另一种数组的使用方式是low和hi的标志方式,同样为左闭右开的方式,hi仅仅当做监视
哨。但是在实际逻辑思考的时候,带来诸多方便。后续补充。
主要明白为什么采用这个算法,和这个算法的优点。而不是去在数学原理上探究这个算法
为什么这样做。

一个值得讨论的例子

在做数组求和的时候,往往high是真实的最高位,即左闭右闭的区间。原因是递归基的最后判断
条件是low == high 自然要求high真实存在。

如果采用左闭右开的区间的话,就[0, 1)区间的划分,将会是无限递归的,因为其始终可以划分为[0,0]
和[0, 1)因此需要重新设置递归基。

转载于:https://www.cnblogs.com/patientcat/p/9720259.html

C/C++关于VScode报错“终端将被任务重用,按任意键关闭”的解决方案 这其实不是一种报错,有这个提示的原因是本地端口是被共享的,所以必须关闭一个进程才能执行另一个,只需要对 tasks.json文件做一些修改即可。 报错时候 此时的tasks.json为: { "version": "2.0.0", "command": "g++", "args": ["-g","${file}","-o","${fileDirname}/${fileBasenameNoExtension}.exe"], // 编译命令参数 "problemMatche 阅读详情

相关推荐

Silvaco TCAD仿真4——DeckBuild实战:从示例库到自定义设计

本文详细介绍了Silvaco TCAD仿真工具DeckBuild的实战应用,从示例库的使用到自定义设计的全过程。通过具体案例和参数修改技巧,帮助用户快速掌握TCAD仿真技术,提升半导体器件设计的效率和精度。特别适合需要从基础入门到进阶操作的工程师和研究人员。

weixin_29284657的博客 425

(附思维导图)数据结构(邓俊辉)清华大学-第一章-绪论

©版权声明:本文为博主原创文章,未经博主允许不得转载。 首先,附上第一章的思维导图: 1 计算机与算法 1.1 计算 对象:规律、技巧 目标:高效、低耗 1.2 伸缩计算机 古埃及利用勾股定理,过某点做某条指定直线的垂线。 计算机是什么? 计算过程中所允许的工具。 计算=信息处理 借助某种工具,遵照一定规则,以明确而机械的程序进行 1.3 有穷性文...

学习让 Livius 快乐 7699

【无机纳米材料科研制图——OriginLab 0205】Origin对BET吸附/脱附曲线及孔径分布制图...

此篇,我们来分享如何对BET数据进行处理和制图。 一、等温吸脱附曲线绘制 1)找到等温吸脱附文件。 一半来说,对一个样品测一次BET,会产生很多数据,具体因仪器而异。我这里的数据主要有两个文件夹,一个脱附,一个吸附,吸附文件夹中多了一个等温吸脱附的文件夹。而这...

XD_Yangf的博客 796

数据结构(一)绪论

文章目录计算绳索计算机尺规计算机算法有穷性好算法计算模型性能测试问题规模最坏情况理想模型图灵机图灵机实例RAM模型RAM实例大O记号主流长远大O记号(big-O notation) 作为非计算机专业学生,开始学习数据结构,这里主要是学习清华大学的:数据结构-学堂在线慕课(MOOC)平台 并作出相应笔记。 计算 研究对象:找出其规律,总结出技巧。 目标:实现有效和高效的计算,在资源消耗方面足够低廉。...

sinat_32512123的博客 1039

电子电气架构 --- 整车电源管理

保证启动能力:防止因电池电量耗尽而导致的车辆无法启动,这对于确保车辆在任何时候都能可靠运行至关重要。 延长电池寿命:通过避免电池深度放电,有助于延长其使用寿命,减少更换电池的需求和成本。 提升用户体验:虽然负载被关闭可能会暂时影响舒适度,但通过在必要时自动采取行动,可以减少驾驶员的焦虑和不确定性,提高整体的用户满意度。

Soly_kun的博客 1076

实战神器指标解析 篇四:主力吸筹指标及其分析和使用说明

主力可能会进行多次吸筹,因此需要根据黄色趋势线来判断是否有转强的变化。一旦出现转强的迹象,这通常意味着吸筹已经接近尾声,即将进入拉升前期。此时可以介入进行建仓。该股票指标通过分析价格变动的方式,能够精确跟踪并标识主力的吸筹行为。当底部出现多根洋红色柱子时,这通常表示出现了主力吸筹的指示。这段代码主要用于分析股票的底部吸筹情况、趋势和涨跌情况。

生活在别处 6199

bytestoread有数据时也为0_数据结构(邓俊辉/严蔚敏)的学习

本文使用 Zhihu On VSCode 创作并发布数据结构(邓俊辉/严蔚敏)的学习第一章 绪论第二章 向量第三章 列表C语言实现链表内核链表/通用链表第四章 栈与队列波兰式转逆波兰式使用顺序表实现循环队列N皇后第五章 二叉树先中后序遍历的非递归写法二叉树性质(根节点层数为1)由n个节点可以构造出多少种不同的二叉树?满二叉树(Full Binary Tree / Perfect Binary Tr...

weixin_34526733的博客 396

汽车ECU诊断刷写和OTA升级中的验签和校验

汽车ECU诊断刷写和OTA升级中的验签和校验

天赐好车的博客 604

邓俊辉数据结构与算法学习笔记-第一章

文章目录1.绪论a.计算b.算法 1.绪论 a.计算 对象:规律、技巧 目标:高效、低耗 计算机是工具和手段,而计算才是目标 绳索计算机及其算法(勾股定理) 尺规计算及其算法(相似三角形) b.算法 ●计算 = 信息处理 借助某种工具,遵照一定规则,以明确而机械的形式进行 ●算法,特定计算模型下,旨在解决特定问题的指令序列 ●算法:有穷性 程序未必是算法 ...

xiaodidadada的博客 961

Qt6.10 | Qt Bluetooth 蓝牙

本文介绍了QtBluetooth模块的功能和使用方法,包括蓝牙API概述、构建配置(CMake/qmake)、权限管理、平台支持(Linux/macOS特殊处理)、日志设置及许可信息。重点说明Linux平台的后端选择机制,以及macOS上的依赖限制。最后提及蓝牙聊天示例,展示RFCOMM协议通信的实现。全文提供了蓝牙开发的技术要点和注意事项。

Qt历险记,专注Qt技术,三年医疗设备研发经验,1年机器视觉研发经验,半年柔性传感研发经验。 392

OpenClaw实战系列10(完结篇):企业级应用实战案例——从0到1搭建智能客服系统

本文以一家跨境电商公司为例,从需求分析、系统设计、分步搭建到上线运营,完整呈现智能客服系统的落地全过程。所有配置命令和截图均来自实测环境,你可以直接复制使用。

PeterPan的博客 1298

邓俊辉老师数据结构课程笔记

一、绪论 1.复杂度分析的主要方法 迭代:级数求和 递归:递归跟踪+递推方程 猜测+验证 2.级数的分类和计算: 最下面的调和级数和对数级数是后面要经常用到的

肥仔的博客 4155

利用 Python 构建高效爬虫爬取国家标准文献——从基础到进阶

然而,由于许多标准文献需要从特定网站获取,手动下载既耗时又低效,因此构建自动化爬虫成为一种实用且高效的解决方案。本文从技术选型、网站分析、代码实现到反爬优化,全面讲解了如何爬取国家标准文献。国家标准文献(National Standards Literature)是国家对各领域统一规范的文件,涵盖了技术参数、测试方法、生产工艺等内容。因此,通过自动化爬虫技术进行文献爬取和管理,不仅能解放劳动力,还可以提高数据管理效率。在构建爬虫前,我们需要对目标网站进行分析,包括页面结构、请求方式以及可能的反爬机制。

2201_76125261的博客 2099

【数据结构(邓俊辉)学习笔记】绪论05——动态规划

让代码能够不仅正确而且足够高效地运行。

weixin_44399845的博客 1547

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

【数据结构(邓俊辉)学习笔记】绪论03——递归分析

数据结构中经常用到递归,递归分析和优化也是必要的,记录下递归分析。

weixin_44399845的博客 1190

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

清华邓俊辉数据结构学习笔记(1) - 绪论、向量、列表

第一章 绪论 (a)计算 好算法:正确(处理简单的、大规模的、一般性的、退化的、合法的输入)、健壮、可读、效率(速度快、存储空间小) 计算成本T(n):求解规模为n的问题所需基本操作数,在规模为n的所有实例中,只关注最坏(成本最高)者 (b)计算模型 图灵机模型(TM)(q, c; d, L/R, p):状态为q,当前字符为c;将当前字符改为d,转向左/右邻格;转入p状态,一旦转入状态’h’,停机...

weixin_42194879的博客 1790

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

【数据结构(邓俊辉)学习笔记】绪论01——复杂度度量

复杂度度量

weixin_44399845的博客 1451

【数据结构(邓俊辉)学习笔记】绪论02——复杂度分析

明确了算法复杂度的度量标准后,如何分析具体算法的复杂度?各复杂度之间的层次?

weixin_44399845的博客 1436

【数据结构(邓俊辉)学习笔记】绪论04——算法分析

通过以基本计算模型作为参照,并且以大O记号的形式在上面添加适当刻度,已经建立一套对DSA进行分析的完整工具和体系。不清楚的可以看看和接下来学习下如何运用工具对DSA进行性能分析,包括其中主要思路和方法。与这套体系建立的思路类似,我们在具体运用这套体系的时候,依然要坚持去粗存精,最终的学习目标是能够达到自如驾驭和运用这套工具来完成去粗存精式的估算。

weixin_44399845的博客 1076

邓俊辉 数据结构 第一章 绪论 笔记

计算算法 对于这个问题仍然没有结论,所以有穷性得不到保证 程序 不等于 算法 比如死循环或者栈溢出 计算优劣 统一尺度 计算模型(图灵机) 计算模型 (RAM) 渐进分析(大O记号) 分别对应最好和平均情况 渐进分析(多项式) 不含转向(循环 递归 调用),必顺序执行即O(1),反之则不是。 渐进分析(复杂度层级) 算法分析 (级数) 算法分析(迭代)...

dldldl1994的博客 397

学堂在线:数据结构_邓俊辉(2020秋)——C++ 学习笔记

文章目录第一章 绪论1.1 计算机与算法1.2 复杂度度量1.3 复杂度分析1.4 递归与优化第二章 向量 第一章 绪论 1.1 计算机与算法 计算机科学核心在于研究计算方法与过程的规律。 起泡排序:通过不断改善局部有序性实现整体的有序——不断交换相邻逆序对。 即一般思路是对长度为n的序列,进行n-1趟局部有序性改善,这里可以通过一个检验变量记录一趟局部改善过程中是否存在逆序对,若不存在即已排序好。 void bubblesort(int A[], int n) { bool sorted = f

Lip0041的博客 1133

邓俊辉数据结构第一章:绪论笔记(未完待续)

数据结构和算法

digitalkee的博客 842

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

数据结构,邓俊辉老师 平台——学堂在线 https://www.xuetangx.com/course/THU08091000384/5883586?channel=learn_title 第一章 绪论 迭代与递归 迭代乃人工,递归方神通 To iterate is human, to recurse, divine 学习内容上,螺旋式的上升 从递归程序转到——> 高效的迭代,重点 凡治众如治寡,分数是也 —— 《孙子兵法》 空间复杂度 = 累加器 + 中间循环的控制变量,即除输入本身占的空间

王缓缓欢的博客 442

数据结构1

最近在学习清华邓俊辉老师的数据结构与算法,简单整理下。 Computer science should be called computing science,for the same reason why surgery is not called knife science. 一、 绪论 (随性而记的笔记) 1. 算法(信息处理) 算法是借助某种工具,遵照一定的规则,以明确而机...

Xdong_Gui的博客 343

数据结构(邓俊辉)学习:第1章 绪论:从零理解算法与数据结构

我们通常说的计算机是电脑,但书里用的是更广义的概念:任何能支持和实现计算过程的物理机制,都叫计算机。 来看三个历史例子:问题:在一条直线 lll 上,已知一个点 PPP,如何画出经过 PPP 且垂直于 lll 的直线? 工具:12段等长的绳索,首尾相连成环,联结处称为"结",编号 0∼110 \sim 110∼11。 算法步骤(用现代语言描述): 原理:绳索被拉成三角形,三边长度比为 3:4:53:4:53:4:5(即 0∼40\sim40∼4 号结段长4,4∼94\sim94∼9 号结段长5,9∼09\s

虾球 186

《数据结构》学习笔记-第一章 绪论(需反复揣摩)

邓俊辉《数据结构》学习笔记-第一章 绪论(自用)1.计算(=信息处理)2.计算模型(=计算机=信息处理工具)2.1 TM2.2 RAM3.大O记号O(f(n))常用的几个刻度4.算法分析4.1 正确性4.2 复杂度5.迭代与递归5.1 数组求和5.2 数组倒置5.3 找出最大两个整数典型的递推方程递归关系6.动态规划6.1 Fibonacci6.2 Longest Common Sequence ...

玉帝 540
上一篇: MQTT----物联网常用的消息队列协议
下一篇: 微信小程序-canvas绘制文字实现自动换行
weixin_30527143
博客等级 码龄11年 140粉丝 0原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值