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

第一节课介绍了数据结构的基本概念,首先没有直接给出相关的定义而是通过思考如何在书架上摆放书籍这样一个简单的类比了解到数据的组织方式的重要性,并通过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. EntityFramework、Dapper vs 草根框架性能大比拼,数据库访问哪家强?

    扯淡 当前市面上 ORM 很多,有跑车型的,如 Dapper,有中规中矩型的,如 Mybatis.Net,也有重量型的,如 EntityFramework 和 NHibernate,还有一些出自草根之 ...

  2. VS2015 使用及插件推荐

      环境搭建与插件推荐 Cpp in Win10 x64 vs2015 + Resharper/Visual Assist X vs2015Pro: Download or see BaiDu 中文专 ...

  3. StringHelper

    /// <summary> /// 文本取左边 /// </summary> /// <param name="str"></param& ...

  4. iOS学习-压缩图片(改变图片的宽高)

    压缩图片,图片的大小与我们期望的宽高不一致时,我们可以将其处理为我们想要的宽高. 传入想要修改的图片,以及新的尺寸 -(UIImage*)imageWithImage:(UIImage*)image ...

  5. neo4j-jersey分嵌入式和服务式连接图形数据库

    原文载自:http://blog.csdn.net/yidian815/article/details/12887259 嵌入式: 引入neo4j依赖 <dependency> <g ...

  6. 2016总结&2017计划

    2016总结 总体而言,上半年比较勤快,下半年偷懒了.下半年仔细看了Barfoot的书<state estimation for robotics>,收获很大. 2017计划 目前打算写以 ...

  7. centos7 安装lnmp环境

    准备工作 一.配置防火墙 vim /etc/sysconfig/iptables 开启80端口.3306.22端口 -A INPUT -m state --state NEW -m tcp -p tc ...

  8. UVA445

    测试了很多数据都没问题,但是就是一直WA... #include<stdio.h> #include<string.h> int main(){ ]; int n; while ...

  9. (function($){...}) (jQuery)

    这里实际上是匿名函数 function(arg){...}这就定义了一个匿名函数,参数为arg 而调用函数 时,是在函数后面写上括号和实参的,由于操作符的优先级,函数本身也需要用括号,即:(funct ...

  10. NOIP2016游记

    只是游记而已.流水账. Day0:忘了. Day1:看完T1,本以为T2一如既往很简单,结果看了半天完全没有思路.然后看了一眼T3,期望,NOIP什么时候要考期望了,于是接着看T2.一开始我推的限制条 ...