做一些笔记记录自己的学习过程

第一节课介绍了数据结构的基本概念,首先没有直接给出相关的定义而是通过思考如何在书架上摆放书籍这样一个简单的类比了解到数据的组织方式的重要性,并通过printN函数的循环实现和递归实现的差异来说明解决问题方法的效率跟空间的利用效率有关,计算多项式在某一个给定点处的值来说明解决问题方法的效率与算法的设计有关。

 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[];
for (i=; 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>; i--)
p = a[i-] + 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: 累加

 for (i=; i<=n; i++){
ThisSum=;
for (j=i; j<=n; j++){
ThisSum+=A[j];
if (ThisSum> MaxSum)
MaxSum= ThisSum;
}
}

算法2: 分而治之

左 中 右

可以达到O(nlogn) 的时间复杂度

算法3: 在线处理

for (i=; i<N; i++) {
ThisSum+=A[i];
if (ThisSum> MaxSum)
MaxSum=ThisSum;
else if (ThisSum < )
ThisSum=;
}

根据“连续”条件作出的高效处理,如果是负数则直接舍弃,不做加和操作。

可以达到 O(n)的时间复杂度,遍历一次即可得到结果。

今天上完这门课程的第一讲,感觉课程内容还是比较简单清楚的,相比于学堂在线的MOOC数据结构,该课程难度会低一些,不过涉猎的范围会广一些,方便个人打基础。

数据结构-浙大 MOOC 笔记一 基本概念的更多相关文章

  1. 数据结构 浙大MOOC 笔记二 线性结构

    线性表及其表现 第二章的内容是关于三种最基本的数据结构 结合<DDSA>第三章 表.栈和队列做一个总结 首先简单说明一下各个数据结构的特点: 数组:连续存储,遍历快且方便,长度固定,缺点是 ...

  2. JavaScript:学习笔记(2)——基本概念与数据类型

    JavaScript:学习笔记(2)——基本概念与数据类型 语法 1.区分大小写.Test 和 test 是完全不同的两个变量. 2.语句最好以分号结束,也就是说不以分号结束也可以. 变量 1.JS的 ...

  3. Linux内核设计与实现笔记_1_基本概念

    Linux内核设计与实现笔记_1_基本概念 操作系统 系统这个词包含了操作系统和所有运行在它上面的应用程序.操作系统是指在整个系统中负责完成分最基本功能和系统管理的那些部分,这些部分应该包括: 内核, ...

  4. 【阅读笔记】rocketmq 概念与架构 (一)

    介绍 rocketmq 框架与基本概念 1. 概念 1.1 namesrv(name server) 记录了 broker 集群信息,消息队列的信息以及 key-value 配置,见 RouteInf ...

  5. 浙大MOOC《数据结构》随笔

    第一讲 基本概念 1.1 什么是数据结构 图书摆放问题: 新书如何插入? 先定类别,再二分查找 怎么找到指定某本书? 二分查找 写程序实现一个函数PrintN 循环实现 void PrintN(int ...

  6. 数据结构入门第二课(浙大mooc)

    数据结构入门第二课 目录 数据结构入门第二课 引子 多项式的表示 方法1 顺序结构表示多项式各项 方法2 顺序结构表示非零项 方法3 链表结构存储非零项 多项式问题的启示 线性表 线性表的抽象数据类型 ...

  7. ROS学习笔记2-基本概念

    本笔记来源于:http://wiki.ros.org/ROS/Concepts ROS文件系统级别文件系统级别主要包含了你能在ROS的磁盘上遇到的资源,包括: 包(Packages):包是ROS中资源 ...

  8. linux设备树笔记__dts基本概念及语法【转】

    转自:http://www.360doc.com/content/15/1113/11/15700426_512794532.shtml 设备树手册(Device Tree Usage)原文地址:ht ...

  9. es6学习笔记-class之一概念

    前段时间复习了面向对象这一部分,其中提到在es6之前,Javasript是没有类的概念的,只从es6之后出现了类的概念和继承.于是乎,花时间学习一下class. 简介 JavaScript 语言中,生 ...

随机推荐

  1. python2.7高级编程 笔记一(Python中的with语句与上下文管理器学习总结)

    0.关于上下文管理器上下文管理器是可以在with语句中使用,拥有__enter__和__exit__方法的对象. with manager as var: do_something(var) 相当于以 ...

  2. knockout学习笔记目录

    关于knockout学习系列的文章已经写完,这里主要是做个总结,并且将目录罗列出来,方便查看.欢迎各位大神拍砖和讨论. 总结 kncokout是一个轻量级的UI类库,通过MVVM模式使前端的UI简单话 ...

  3. 基于C/S架构的3D对战网络游戏C++框架 _05搭建系统开发环境与Boost智能指针、内存池初步了解

    本系列博客主要是以对战游戏为背景介绍3D对战网络游戏常用的开发技术以及C++高级编程技巧,有了这些知识,就可以开发出中小型游戏项目或3D工业仿真项目. 笔者将分为以下三个部分向大家介绍(每日更新): ...

  4. postgresql 导入sql,out等sql文件

    假设postgresql安装位置 然后,使用dos窗口进入这个位置 导入(本地和默认端口可以不用属性) psql -d 数据库名 -h ip地址 -p 数据库端口 -U 用户名 -f 文件地址 完成

  5. 滚来滚去,滚来滚去...Scroller完全解析

    API: 1 mScroller.getCurrX() //获取mScroller当前水平滚动的位置 2 mScroller.getCurrY() //获取mScroller当前竖直滚动的位置 3 m ...

  6. 编译CM14.1(sudmod71.1)过程记录

    编译CM14.1内存要求很高,至少8G以上,我的6G也可以搞定,交换空间分配大一点. 1.安装平台 建议安装Deepin 15.3桌面版系统,系统UI好看. 2.配置环境 (1)安装编译依赖库 sud ...

  7. Linux 建立文件夹的链接

    linux下的软链接类似于windows下的快捷方式 建立软链接 ln -s a b a 就是源文件,b是链接文件名,其作用是当进入b目录,实际上是链接进入了a目录 example:ln -s /ho ...

  8. Average Precision of VOC

    转一篇文章,主要是关于VOC中Average Precision指标的 原文出处:https://sanchom.wordpress.com/tag/average-precision/ 还有一篇文章 ...

  9. SQLServer------将表和内容导入到另一个数据库

    转载: http://jingyan.baidu.com/article/d5c4b52bc5c102da570dc547.html

  10. ig WebDataGrid清除选中行

    EnableViewState="false" gridID.Behaviors.Selection.SelectedRows.Clear();