数据结构-浙大 MOOC 笔记一 基本概念
做一些笔记记录自己的学习过程
第一节课介绍了数据结构的基本概念,首先没有直接给出相关的定义而是通过思考如何在书架上摆放书籍这样一个简单的类比了解到数据的组织方式的重要性,并通过printN函数的循环实现和递归实现的差异来说明解决问题方法的效率跟空间的利用效率有关,计算多项式在某一个给定点处的值来说明解决问题方法的效率与算法的设计有关。
1 void PrintN(int N){int i; for (i=1;i<=N;i++){ printf("%d\n",i);}return;} //循环实现
void PrintN (int N)
{
if (N){PrintN(N-1);printf("%d\n",N);}return;
}
//递归实现
double f( int n, double a[], double x) { int i;double p=a[0];for (i=1; i<=n; i++)p+= (a[i]* pow(x,i));return p; }//循环实现
double f( int n, double a[], double x) { int i;double p= a[n];for (i=n; i>0; i--)p = a[i-1] + x*p;return p; }//递归实现
在进行算法分析和比较的过程中,我们会有实际进行程序运行时间的计算内容,这就需要用到clock()函数;
运行的模板如下
int main ()start = clock();MyFunction();stop= clock();duration = ((double) (stop= start)) / CLK_TCK
其中CLK_TCK 表示机器时钟每秒所走的时钟打点数
自然推导出相关的结论说明数据结构是关于 对象结构+操作+算法三个部分的内容
第一讲的最后又简单介绍了抽象数据类型的定义 (Abstract Data Type)
数据对象集 + 数据集合相关联的操作集
抽象表示实现方法不依赖于具体实现,under the hood部分的内容不做考虑,只关心开车不关心怎么造汽车的一个过程。
比如矩阵作为一种抽象数据类型
可以从以下几点来考虑
1.2 什么是算法?
- 有限的指令
- 接受一些输入
- 产生输出
- 在有限步骤之后终止
- 每一条指令必须 a.明确 b.计算机可处理 c.不依赖单独某一种特定的计算机语言
时间复杂度 与 空间复杂度的计算技巧
for 循环则相乘
if- else 取决于if条件判断复杂度和两个分枝部分的复杂度三者中的最大值
T1(n) + T2(n) = max
T1(n) * T2(n) = O (f1(n)*f2(n))
1.3 最大子列和问题-实例分析
算法1: 累加
1 for (i=1; i<=n; i++){ 2 ThisSum=0; 3 for (j=i; j<=n; j++){ 4 ThisSum+=A[j]; 5 if (ThisSum> MaxSum) 6 MaxSum= ThisSum; 7 } 8 }
算法2: 分而治之
左 中 右
可以达到O(nlogn) 的时间复杂度
算法3: 在线处理
for (i=0; i<N; i++) {ThisSum+=A[i];if (ThisSum> MaxSum)MaxSum=ThisSum;else if (ThisSum <0 )ThisSum=0; }
根据“连续”条件作出的高效处理,如果是负数则直接舍弃,不做加和操作。
可以达到 O(n)的时间复杂度,遍历一次即可得到结果。
今天上完这门课程的第一讲,感觉课程内容还是比较简单清楚的,相比于学堂在线的MOOC数据结构,该课程难度会低一些,不过涉猎的范围会广一些,方便个人打基础。
转载于:https://www.cnblogs.com/kong-xy/p/6234681.html
数据结构-浙大 MOOC 笔记一 基本概念相关推荐
- 清华大学邓俊辉-数据结构MOOC笔记-树的概念及逻辑表示
清华大学邓俊辉-数据结构MOOC笔记-树的概念及逻辑表示 有关概念: 与图论略有不同,数据结构中的树:1.需要为每一颗树指定一个特殊的顶点,作为"根"(root),对应rooted ...
- 数据结构与算法笔记(十五)—— 散列(哈希表)
一.前沿 1.1.直接寻址表 当关键字的全域U比较小时,直接寻址是一种简单而有效的技术.假设某应用要用到一个动态集合,其中每个元素都有一个取自全域U={0,1,-,m-1)的关键字,此处m是一个不很大 ...
- 数据结构与算法笔记(青岛大学王卓老师视频)
写在前面的话: 因为在学习数据结构之前,学习过一年的算法,所以有一些基础,一些我觉得 没必要的代码或知识就没写上,记得多是一些知识点,写的可能对于别人来说 很难接受,望谅解.我学习算法是在Acwing ...
- 20220530数据结构绿皮书读书笔记
个人博客 https://blog.hylstudio.cn/archives/964 20220530数据结构绿皮书读书笔记 9 表格和信息检索 9.1 简介 第七章我们证明过,仅仅使用比较的方式从 ...
- 罗昭峰文献管理与信息分析mooc笔记整理
mooc网址: http://mooc.guokr.com/course/1301/文献管理与信息分析/ mooc笔记: http://mooc.guokr.com/course/1301/文献管理与 ...
- 20220518数据结构绿皮书读书笔记
个人博客 https://blog.hylstudio.cn/archives/945 为了良好的阅读体验,建议到个人博客或CSDN,QQ空间就是备份用的,tx看起来彻底放弃日志了.... 20220 ...
- 20220601数据结构绿皮书读书笔记
个人博客 https://blog.hylstudio.cn/archives/970 20220601数据结构绿皮书读书笔记 11 多叉树 11.1 定义 数学定义上的树有着广泛的概念,它是任意顶点 ...
- 数据结构期末复习笔记(NEU版)
数据结构期末复习笔记 绪论 数据结构的概念 数据结构的分类 数据结构研究的内容 算法的重要特性 算法的设计要求 题目汇总 线性表 栈和队列 栈 队列 题目 数组与广义表 树 二叉树 二叉树的遍历 线索 ...
- 数据结构与算法笔记(王卓网课+教材+大话数据结构)
数据结构与算法笔记(王卓网课+教材+大话数据结构) ##最新整理!!! 顺序存储结构的线性表P10-P21 顺序线性表的代码实现 链式线性表笔记 串笔记 绪论.算法(P1-P9)1.4数据起源结构 数 ...
最新文章
- php扩展兼容,PHP扩展迁移为PHP7扩展兼容性问题记录,php7兼容性_PHP教程
- H3C Basic NAT
- Python---编写一函数 Fabonacci(n),其中参数 n 代表第 n 次的迭代。
- mysql 修复表 阿里云_MySql数据表修复方法-阿里云开发者社区
- ICML2020 | 一行代码就能实现的测试集上分技巧
- java实体类实现抽象类_java接口、抽象类、实体类关系介绍
- Python3入门机器学习经典算法与应用 第3章 Numpy中的比较和FancyIndexing
- 网站横幅切换jquery 插件
- STEPN 新手入门及进阶
- 牛年第一瓜!阿里女员工被初中文化男子骗走500多万!开豪车连骗12名女性,被判无期!...
- m3u8转mp4,不用格式软件
- Springboot课程教学平台设计与实现4mu05计算机毕业设计-课程设计-期末作业-毕设程序代做
- vscode Trace/breakpoint trap 问题
- synchonized只能回答加锁?深入解析,关于锁升级流程的各项细节
- ThreadPoolExecutor 线程池的使用
- kubeadm部署kubernetes-1.12.0 HA集群-ipvs
- 温度传感器——热电偶
- Hadoop Single Node Setup(hadoop本地模式和伪分布式模式安装-官方文档翻译 2.7.3)
- 细数程序员的奇葩辞职理由
- 海洋石油工程项目数字化建设方案
热门文章
- access vba 常量数组赋值_VBA数组是什么?有何作用?别担心,你只需用1分钟就明白它是什么...
- 三插头内部结构图_10寸三防加固平板电脑 条码数据采集器 工业级耐摔防爆 高清屏幕带网口串口 支持航空插头...
- html5中text-align,text-align
- 训练图像预处理函数功能(paddle)
- 图片视角转换 cv2.warpPerspective
- 测试逐飞的MM32F3277 MicroPython开发板的基本功能
- 最温暖的大学,最火热的比赛
- Boston房价PaddlePaddle测试程序
- 第十五届智能车竞赛东北赛区普通四轮组冠军车-哈尔滨工业大学-紫丁香
- 栅极电阻要取100欧姆?