什么是数据结构?什么是算法
记得是大一大二的时候学习了数据结构。时间过的好快,现在实现了,现在感觉自己的基础好差很多都不会。欠的帐还是要还的!
什么是数据结构?什么是算法?
呃呃呃呃 哎….不会。
多次参加了MOOC姥姥的数据结构,都没有坚持下来,希望这次可以坚持下来。
引用姥姥的例子:如果给你一堆书你会怎么放?
想怎么放就怎么放,哈哈。
如果书不多,我们一般是一本插着一本的放着。如下图
要是书的规模很大呢?如学校图书馆里面的书如果是按上述一本一本的插入,那么以后需要找书的时候是不是累死人了。如下图
所以答案是看书的规模。
什么是数据结构?
数据是什么?结构是什么?
参考大话数据结构,几个术语的定义
数据:是描述客观事物的符号,是计算机中可以操作的对象,是能被计算机识别,并输入给计算机处理的符号集合。
其实就是图书馆中所有的书。
数据元素:是组成数据的、有一定意义的基本单位,在计算机中通常作为整体处理。也被称为记录。
就是书。
数据项:一个数据元素可以由若干个数据项组成。
其实就是书名、作者、出版社啥的….
class Book {
//书名
private String bookName;
//作者
private String bookAuthor;
//出版社
private String bookPress;
}
其实一个Book对象就是数据元素,bookName、bookAuthor、bookPress就是数据项。
数据对象:是性质相同的数据元素的集合,是数据的子集。
其实就是某一类书。如图下图都是数据结构一类的书
是不是明白了什么是数据?哈哈 还是需要结合例子理解的深入啊。
什么是结构?
逻辑结构、物理结构。
逻辑结构:是指数据对象中数据元素之间的相互关系。包括集合结构、线性结构、树形结构、图形结构。
集合结构:集合结构中的数据元素除了同属于一个集合外,它们之间没有其它关系。
线性结构:线性结构中的数据之间是一对一的关系。
树形结构:树形结构中的数据之间存在一种一对多的层次关系。
图形结构:图形结构的数据元素是多对多的关系。
物理结构:是指数据的逻辑结构在计算机中的存储形式。顺序存储和链式存储。
顺序存储:是把数据元素存放在地址连续的存储单元里。
链式存储:是把数据元素存放在任意的存储单元里,这组存储单元可以是连续的,也可以是不连续的。
什么是数据结构?
Sartaj Sahni在他的《数据结构、算法与应用》一书中称:“数据结构是数据对象,以及存在于该对象的实例合组成实例的数据元素之间的各种联系。这些联系可以通过定义相关的函数来给出。”他将数据对象(data object)定义为“一个数据对象是实例或值的集合”。
Clifford A.Shaffer在《数据结构与算法分析》一书中的定义是:“数据结构是 ADT(抽象数据类型Abstract Data Type) 的物理实现。”
大话数据结构:数据结构是相互之间存在一种或多种特定关系的数据元素的集合。
姥姥:数据结构包括数据对象集以及它们在计算机中的组织方式,即它们的逻辑结构和物理存储结构,同时还包括与数据对象集相关的操作集,以及实现这些操作的最高效的算法。
个人:就是把图书馆中的书转化为一些字符数据存入电脑中,以及对这些数据对象集的操作。如找书,摆放放书等。
什么是算法?
还是图书馆的例子,如果一本一本找累死人,要是有个索引,先找哪一类这样会快很多。如何查找其实就是算法。
算法是解决问题步骤的有限集合,通常用某一种计算机语言进行伪码描述。通常用时间复杂度和空间复杂度来衡量算法的优劣。
算法的五大特征:输入、输出、有穷性、确定性、可行性。
输入:零个或多个输入。
输出:一个或多个输出。
有穷性:有限步骤后在可接受时间内完成。
确定性:每个步骤都有确定含义,无二义性。
可行性:每一步都是可行的。
算法设计要求:正确性、可读性、健壮性、时间效率高和存储低。
正确性:有输入输出,无二义性,有正确答案。
可读性:方便阅读。
健壮性:输入不合法能处理
时间效率高和存储低:时间空间复杂度越低越好。
这就是数据结构和算法。
什么是数据结构?什么是算法相关推荐
- 【从蛋壳到满天飞】JS 数据结构解析和算法实现-AVL树(一)
前言 [从蛋壳到满天飞]JS 数据结构解析和算法实现,全部文章大概的内容如下: Arrays(数组).Stacks(栈).Queues(队列).LinkedList(链表).Recursion(递归思 ...
- python数据结构推荐书-「算法与数据结构」从入门到进阶吐血整理推荐书单
推荐一下「算法与数据结构」从入门到进阶的书单. 一.入门系列 这些书籍通过图片.打比方等通俗易懂的方法来讲述,让你能达到懂一些基础算法,线性表,堆栈,队列,树,图,DP算法,背包问题等,不要求会实现, ...
- 【从蛋壳到满天飞】JS 数据结构解析和算法实现-哈希表
前言 [从蛋壳到满天飞]JS 数据结构解析和算法实现,全部文章大概的内容如下: Arrays(数组).Stacks(栈).Queues(队列).LinkedList(链表).Recursion(递归思 ...
- Algorithm:【Algorithm算法进阶之路】之数据结构二十多种算法演示
Algorithm:[Algorithm算法进阶之路]之数据结构二十多种算法演示 目录 一.数据结构算法 1.顺序表 2.链表 3.栈和队列 4.串的模式匹配 5.稀疏矩阵 6.广义表 7.二叉树 8 ...
- 大话数据结构:最短路径算法
dijkstra最短路径算法 迪杰斯特算法的核心是首先正向把离起点最近的点一个一个找出来,然后从终点开始逆向计算最短路径 利用图数据结构实现dijkstra算法的伪代码如下 {记录所有点到起点的距离并 ...
- python处理mysql数据结构_python环境下使用mysql数据及数据结构和二叉树算法(图)...
python环境下使用mysql数据及数据结构和二叉树算法(图): 1 python环境下使用mysql 2使用的是 pymysql库 3 开始-->创建connection-->获取cu ...
- 【从蛋壳到满天飞】JS 数据结构解析和算法实现-堆和优先队列(一)
前言 [从蛋壳到满天飞]JS 数据结构解析和算法实现,全部文章大概的内容如下: Arrays(数组).Stacks(栈).Queues(队列).LinkedList(链表).Recursion(递归思 ...
- 数据结构与就算法(选择排序)
数据结构与就算法(选择排序) 数据!您好 2019-01-07 05:16:18 2736 收藏 17 版权 1>什么是选择排序,选择排序和插入排序的思想差不多,也分已排序区间和未排序区间,只是 ...
- 常用数据结构以及数据结构的排序算法
2019独角兽企业重金招聘Python工程师标准>>> 数组 (Array) 在程序设计中,为了处理方便, 把具有相同类型的若干 变量按有序的形式组织起来.这些按序排列的同类数据元素 ...
- 「数据结构」普林斯顿算法课第二周作业
「数据结构」普林斯顿算法课第二周作业 Algorithm I, Princeton 编程作业: Deques and Randomized Queues 思路 Deque.java Randomize ...
最新文章
- iis下 ActiveSync插件无法访问(下)
- c#_可扩展标记语言XML
- C 语言编程 — 结构体的数据类型转换
- 【错误记录】Android Studio 编译报错 ( This Gradle plugin requires a newer IDE able to request IDE model leve )
- 开启mysql慢查询日志,不重启数据库的方法
- libgdx游戏引擎开发笔记(十)SuperJumper游戏例子的讲解(篇四)---- 主游戏界面内部框架编写...
- 公司的年度汇报怎么写 年底述职报告写法
- 【SQL】找出行数与自增标识值不相等的表(即有缺行)
- 11个Java 开源 socket框架
- Gson源码解析之InstanceCreator简单说明
- equals方法的小结
- C语言员工信息管理系统
- 什么是线性同余法c语言,C语言线性同余法产生随机数
- PDF可以转换成CAD图纸吗?
- 用计算机进行进制换算方法,计算机进制怎么转换?计算机进制换算方法
- unity 中Line Renderser初始化有额外线段
- 获取iOS设备唯一标识
- 剑指offer做题记录
- 作物产量常用的单位换算公式
- 抖音飞鸽售前售后相关指标
热门文章
- python实现jacknife交叉验证
- 微信授权登录(微信订阅号使用测试账号)
- ArcEngine 10.2 画圆形
- 谷粒学院day08——课程章节与小节的实现
- 土旦:关于display:flex碰上white-space nowrap 影响布局的问题
- 百度小程序如何引流?给用户带来了更便捷、更人性化的体验
- 华为云服务部署Rstudio Server
- 无盘服务器4根网线雨两根网线的区别,网线接法的描述:实际用到4根。
- 2路继电器控制直流电机正反转问题
- Jsonviewer2 for Notepad++ 64 bit/位