0525.第一章:谈谈数据结构和算法这2个好基友[数据结构和算法]

本文为小甲鱼数据结构和算法教学视频的学习笔记

第一章:谈谈数据结构和算法这2个好基友

一、聊聊数据结构

1、为什么学数据结构?编程能力有质的飞越,不再停留在调用现成的API,做一个上档次的程序员。

2、什么是数据结构?数据结构是一门研究非数值计算的程序设计问题中的操作对象,以及他们之间的关系和操作等相关问题的学科。

思考:好吧,简单来说程序设计 =数据结构
+ 算法,数据结构就是关系,就是数据元素之间存在的一种或多种特定关系的集合。

3、数据结构分为逻辑结构和物理结构,前者指数据对象中数据元素之间的相互关系,否则指逻辑结构在计算机中的存储形式

思考:数据结构  =逻辑结构
+物理结构

4、逻辑结构有四种如下所示:

  • 集合结构:除了同属一个集合外,没有其他任何关系

  • 线性结构:数据元素之间是一对一的关系
  • 树形结构:数据元素之间是一对多的关系
  • 图形结构:数据元素之间是多对多的关系

思考:如果从人的交合方面说明4大逻辑结构,集合
=  2个陌生人,线性结构 =  1对夫妻,树形结构 = 一男多女3p4p5p,图形结构
= 聚众淫乱

5、物理结构是指如何将数据元素存储到计算机的存储器中,此处的存储器主要针对内存而言,像硬盘、光盘能外部存储器的数据组织通常用文件结构来描述。

思考:如果说逻辑结构是关系,那么物理结构就是关系在内存的存储关系

6、数据元素的存储结构形式有两种:

  • 顺序存储:指数据元素存放在地址联系的存储单元里,其数据间逻辑关系和物理关系是一致的,比如数组
  • 链式存储:面对时常变化的元素,比顺序存储灵活多了,就是把数据元素存放在任意的存储单元里,这组存储单元可以是连续的,也可以是不连续的。所以说链式存储结构的数据元素存储关系并不能反应其逻辑关系,因此需要用一个指针存放数据元素的地址,这样子通过地址就可以找到关联数据元素的位置。比如:银行叫号机

思考:存储结构 = 顺序存储
+链式存储,前者就是排排坐,后者多了指针指向元素地址,就可以找到下一个元素在哪里,就是叫号系统

二、聊聊算法

1、不明白数据结构和算法的关系?,见下图

2、算法是什么?算法宅计算机中表现为指令的有限序列,并且每一条指令表示一个或者多个操作。一个问题可以由多个算法解决,一个算法也不可能具有通解所有的问题。

思考1:算法就是你泡妞的技巧和方式,对不同的妞儿要有不同的喜好,可以有多个追求的方式,一种追求方式不可能对通吃所有的妞儿,不同的追求方式就有差别,有的追的快,有的追得慢。学会针对不同的妞儿采取适合的泡妞技巧才能够快速的泡到妞

思考2:尽管算法不唯一,但是我们要学习掌握好一些号的算法,对我们解决问题很有帮助。

3、算法的5个基本特征:输入、输出、有穷性、确定性和可行性

  • 输入:有0个或者多个输入
  • 输出:有1个或者多个输出(如果没有反馈要他干嘛?)
  • 有穷性:有限的步骤后,有限的时间
  • 确定性:没有二义性(爱or不爱)
  • 可行性:每一步可以实现的

4、算法的要求:正确性、可读性、健壮性、时间效率高、存储量低

5、算法的正确性:算法的正确性是指算法至少应该具有输入、输出和加工处理无歧义性,能正确反映问题的需求、能够得到问题的正确答案。大体分为以下四个层次:

  • 算法程序没有语法错误
  • 算法程序对于合法输入能够产生满足要求的输出
  • 算法程序对于非法输入能够产生满足规格的说明
  • 算法程序对于故意刁难的测试输入都有要求的输出结果

思考:对于非法输入和故意刁难的测试都有输出满足规格结果很重要

6、算法的可读性:算法设计的另一个目的就是为了便于阅读、理解和交流。我们写代码的目的除了让计算机执行,还有就是为了便于他人阅读和修改

思考:代码的可读性要强

7、算法的健壮性:当输入数据不合法时,算法也能够做出相关的处理,而不是产生异常、崩溃或者莫名其妙的结果。

思考:健壮性,简而言之就是不会因为别人乱输入就把你的程序搞崩溃了

8、算法的时间效率高和存储量要低:执行的效率很高,使用变量少,少用内存资源

0525.第一章:谈谈数据结构和算法这2个好基友[数据结构和算法]

时间: 2024-10-27 13:39:34

0525.第一章:谈谈数据结构和算法这2个好基友[数据结构和算法]的相关文章

Learning From Data 第一章总结

之前上了台大的机器学习基石课程,里面用的教材是<Learning from data>,最近看了看觉得不错,打算深入看下去,内容上和台大的课程差不太多,但是有些点讲的更深入,想了解课程里面讲什么的童鞋可以看我之前关于课程的第一章总结列表: 机器学习定义及PLA算法 机器学习的分类 机器学习的可能性 我打算边看书边复习讲义,然后用自己的话把每章能看懂的点总结下,欢迎大家指正.由于用语会尽量口语保证易懂,所以会有失严谨性,具体的细节可以看本书.<Learning from data>

javascript数据结构和算法 第一章(编程体验)一

声明和初始化变量 Javascript变量默认是全局作用域的.严格来说,使用之前是不需要定义的. 当一个javascript变量在没有被声明之前直接进行初始化,它就是一个全局变量.在这本书中,我们沿用编译语言如c++和java的编程约定.在使用变量之前都进行声明. 这还有一个附带的好处,声明的变量可以作为本地变量. 我们将会在本章节的后面讨论更多关于变量的作用域. 声明javascript变量,使用关键字var 变量名称.可选择的,可以带上赋值表达式. 下面是一些例子 var number; v

javascript数据结构和算法 第一章(编程体验)三

变量作用域 变量作用域就是指在一个程序中,变量的值在哪里可以被获取到.javascript函数作用域被定义为函数作用域,这意味着变量的值在定义和声明该变量的函数,包括任何在该函数的嵌套函数里是可见的. 当一个变量定义在函数的外面,在主程序中,该变量将会拥有全局作用域.这就意味着它的值可以被程序的任何地方,包括函数获取. 下面的小程序演示全局变量时如何工作的. function showScope() { return scope; } var scope = "global"; pri

javascript数据结构和算法 第一章(Javascript编程环境和模型) 一

这一章介绍了我们在这本书中使用的描述各种数据结构和算法的Javascript的编程环境和编程架构. Javascript 环境 Javascript 在很长一段时间都是被作为web浏览器内置脚本编程语言来使用. 然而,在过去几年里,javascript编程环境得到了极大的发展,他们可以使javascript在桌面或者服务端运行. 在我们这本书中,我们使用其中的一个javascript环境:javascript shell:是Mozilla公司的javascript环境,被称为SpiderMonk

&lt;python3-cookbook&gt;第一章:数据结构和算法

第一章:数据结构和算法 介绍:这本书是高级用法,不是小白使用书目的:写作目的是记录下自己学习这本书的过程以及收获 1.1解压序列赋值给多个变量: 问题:现在有一个包含 N 个元素的元组或者是序列,怎样将它里面的值解压后同时赋值给 N 个变量? 解决方案:通过一个简单的赋值语句解压并赋值给多个变量. 唯一的前提就是变量的数量必须跟序列元素的数量是一样的. 1.2解压可迭代对象赋值给多个变量: 问题:如果一个可迭代对象的元素个数超过变量个数时,会抛出一个 ValueError . 那么怎样才能从这个

第一章:数据结构与算法javascript描述

在前端工程师中,常常有一种声音,我们为什么要学数据结构与算法,没有数据结构与算法,我们一样很好的完成工作.实际上,算法是一个宽泛的概念,我们写的任何程序都可以称为算法,甚至往冰箱里放大象,也要通过开门,放入,关门这样的规划,我们也可以视作为一种算法.可以说:简单的算法是人类的本能.而算法的知识的学习则是吸取前人的经验.对于复杂的问题进行归类,抽象,帮助我们脱离刀耕火种的时代,系统掌握一个算法的过程. 随着自身知识的增长,不论是做前端,服务端还是客户端,任何一个程序员都会开始面对更加复杂的问题,算

Java数据结构与算法(第一章综述)

数据结构和算法能起到什么作用? 数据结构是对在计算机内存中(有时在磁盘中)的数据的一种安排.数据结果包括数组.链表.栈.二叉树.哈希表等等.算法对这些结构中的数据进行各种处理,例如,查找一条特殊的数据项或对数据进行排序. 可用于下面三类情况: 现实数据存储 程序员的工具 建模 数据结构的特性: 数据结构 优点 缺点 数组 插入快,如果知道下标,可以非常快地存取 查找慢,删除慢,大小固定 有序数组 比无序的数组查找快 删除和插入慢,大小固定 栈 提供后进先出的方式存取 存取其他项很慢 队列 提供先

第一章 数据结构与算法

1.1 算法 1.1.1 算法的基本概念 所谓算法是指解题方案的准确而完整的描述. 对于一个问题,如果可以通过一个计算机程序,在有限的存储空间内运行有限长的时间而得到的结果,则称这个问题是算法可解的. 但算法不等于程序,也不等于计算方法. 算法的基本特征: (1) 可行性(Effectiveness) 算法可行性包括以下两个方面: ①算法中的每一个步骤必须能够实现. ②算法执行的结果要能够达到预期的目的.  算法在执行过程中往往要受到计算工具的限制,使执行结果产生偏差. (2)确定性(Defin

《算法导论》读书笔记--第一章

第一章 算法在计算中的作用 一.什么是算法?为什么算法值得研究?相对于计算机中使用的其他技术来说算法的作用是什么? 算法就是任何良定义的计算过程,该过程取某个值或者值的集合作为输入并产生某个值或者值的集合作为输出.这样算法就是把输入转换成输出的计算步骤的一个序列. 若对每个输入实例算法都以正确的输出停机,则称该算法是正确的,并称正确的算法解决了给定的计算问题.注意:不正确的算法只要其错误率可控时可能是有用的,但是我们通常只关心正确的算法. 数据结构是一种存储和组织数据的方式,旨在便于访问和修改.