v  数据结构学习分享:

l 第一章     绪论

用计算机求解任何问题都离不开程序设计,程序设计的实质是数据表示(数据要能被计算机处理,首先必须能够存储在计算机的内存中,这项任务称为数据表示,其核心是数据结构)和数据处理(一个实际问题的求解必须满足各项处理要求,这项任务称为数据处理,其核心是算法)。数据结构课程主要讨论数据表示和数据处理的基本方法。

v 1.1 数据结构在程序设计中的作用

(1)程序设计的一般过程:

1、分析问题,抽象出具体的数据模型(待处理的数据以及数据之间的关系,即数据结构),形成问题求解的基本思路。

2、数据表示和数据处理(具体的操作步骤,将问题求解的基本思路形成算法)。

3、用程序语言编写程序(将算法的操作步骤转换为程序设计语言)。

附:图灵奖获得者沃思的公式:数据结构+算法=程序。

1.2 本书讨论的主要内容

(1)计算机能够求解的问题

1、数值问题 (数值问题抽象出来的数据模型通常是数学方程);

2、非数值问题 (非数值问题抽象出的数据模型通常是线性表,树,图等数据结构)。

(2)非数值问题的数据组织和处理

1、数据的逻辑结构:线性表,树,图等数据结构,其核心是如何组织待处理的数据以及数据之间的关系。

2、数据的存储结构:如何将线性表,树,图等数据结构存储到计算机的存储器中,其核心是如何有效的存储数据以及数据之间的逻辑关系。

1) 3、算法:如何基于数据的某种存储结构实现插入,删除,查找等基本操作,其核心是如何有效的处理数据。

4、常用数据处理技术:包括查找技术,排序技术,索引技术等。

1.3 数据结构的基本概念

1.3.1  数据结构

(1)数据是信息的载体;数据分为数值型数据(整数和实数等)和非数值型数据(文字、声音、图形、图像)。

(2)数据元素是数据的基本单位。

(3)数据项:构成数据元素的不可分割的最小单位。

(4)数据结构是指相互之间存在一定关系的数据元素的集合。

(5)数据的逻辑结构是指数据元素之间逻辑关系的整体。

(6)数据结构的类型:

①集合:数据元素之间就是“属于一个集合”,除此之外,没有任何关系。

②线性结构:数据元素之间存在着一对一的线性关系。

③树结构:数据元素之间存在着一对多的层次关系。

④图结构:数据元素之间存在着多对多的任意关系。

树结构和图结构也称为非线性结构。

(7)数据的逻辑结构常用逻辑关系图来描述,其描述方法是:将每一个数据元素看做一个结点,用圆圈表示,元素之间的逻辑关系用结点之间的连线表示,如果强调关系的方向性,则用带箭头的连线表示关系。数据的存储结构又称物理结构,是数据及其逻辑结构在计算机中的表示。

(8)数据的存储结构:

1、顺序存储结构的基本思想是:用一组连续的存储单元依次存储数据元素,数据元素之间的逻辑关系由元素的存储位置来表示。

2、连接存储结构的基本思想是:用一组任意的存储单元存储数据元素,数据元素之间的逻辑关系用指针来表示。

(9)数据的逻辑结构是从具体问题抽象出来的数据模型,是面向问题的,反映了数据元素之间的关联方式和邻接关系。数据的存储结构是面向计算机的,其基本目标是将数据及其逻辑关系存储到计算机的内存中。

1.3.2  抽象数据类型

(1)数据类型是一组值的集合以及定义于这个值集上的一组操作的总称。

(2)抽象:抽出问题的本质特征而忽略非本质的细节,是对具体事物的一个概括。

(3)抽象数据类型是一个数据结构以及定义在该结构上的一组操作的总称。

1.4  算法及算法分析

(1)算法是对特定问题求解步骤的一种描述,是指令的有限序列。

(2)算法必须满足的五个重要特性:

输入:一个算法有零个或多个输入,这些输入通常取自于某个特定的对象集合;输出:一个算法有一个或多个输出,通常输出与输入之间有着某种特定的关系;有穷性:一个算法必须总是(对任何合法的输入)在执行有穷步之后结束,且每一步都在有穷时间内完成;确定性:算法中的每一条指令都必须有确切的含义,不存在二义性。并且,在任何条件下,对于相同的输入只能得到相同的输出;可行性:算法描述的操作可以通过已经实现的基本操作执行有限次来实现。

(3)“好”算法的特性“:正确性,鲁棒性(也称健壮性),简单性,抽象分级,高效性。

(4)算法的描述方法

①自然语言 ②流程图 ③程序设计语言 ④伪代码

1.4.2   算法分析

(1 )度量算法效率的方法

①事后统计:先将算法实现,然后输入适当的数据运行,测算其时间和空间开销;其 缺点如下:编写程序实现算法将花费较多的时间和精力;所得实验结果依赖于计算机的软硬件等环境因素,有时容易掩盖算法本身的优劣。

②事前分析:渐进复杂度,它是对算法所消耗资源的一种估算方法。

(2)算法的时间复杂度

1、问题规模:是指输入量的多少,一般来说,它可以从问题描述中得到。

2、基本语句:执行次数与整个算法的执行次数成正比的语句。它是对算法运行时间的贡献最大,是算法中最重要的操作。

(3)最好、最坏和平均情况

需要时间和假设是等概率分布。

(4)算法的空间复杂度

在算法的值行过程中,需要的辅助空间数量。

(5)算法分析举例

算法的复杂度包括时间和空间,注重的是时间性能。分析算法的时间复杂度的基本方法:找出执行语句次数最多的语句为基本语句。

注:米勒原则、欧几米算法、沃思、

学习难点:1、抽象数据类型的理解和运用

2、伪代码的理解和使用

3、逻辑结构和存出结构,二者之间的关系。

2014、09、17

理工学院计科一班祖培顺供稿

学习共享,集思广益。相关推荐

  1. 云开发版高效学习微信小程序源码包含复习资料学习共享护眼精灵等功能

    ☑️ 编号:X0016 ☑️ 品牌:暂无 ☑️ 语言:微信小程序 ☑️ 数据库:无需数据库 ☑️ 类型:微信小程序 ☑️ 规格:小程序 ※ 欢迎关注私信(发消息不限制),领取福利 ※ ☑️ 源码介绍: ...

  2. Linux无锁共享内存,优秀数据结构学习 - 共享内存无锁队列的实现(二)

    优秀数据结构学习 - 共享内存无锁队列的实现(二) 优秀数据结构学习 - 共享内存无锁队列的实现(二) 1 关键技术 操作系统提供的进程间通信机制有文件.socket.消息队列.管道.共享内存等.其中 ...

  3. 学习共享--产品思维

    产品经理这个群体现在已经慢慢被大家所认知,作为产品的缔造者,他的思维方式在某种程度上决定着产品的功能甚至未来的产品走向,那么到底什么是真正的产品思维,产品思维又为什么重要,产品思维和创新之间是什么样的 ...

  4. 多智能体强化学习:鼓励共享多智能体强化学习中的多样性

    题目:Celebrating Diversity in Shared Multi-Agent Reinforcement Learning 出处:Neural Information Processi ...

  5. 黄浴:基于深度学习的超分辨率图像技术发展轨迹一览

    作者 | 黄浴 转载自知乎 导读:近年来,使用深度学习技术的图像超分辨率(SR)取得了显著进步.本文中,奇点汽车自动驾驶首席科学家黄浴对基于深度学习技术的图像超分辨率技术进行了一次全面的总结,分析了这 ...

  6. 《强化学习周刊》第28期:UNCC提出全新脑-机交互学习模式:内在互动强化学习...

    No.28 智源社区 强化学习组 强 化 学  习 研究 观点 资源 活动 关于周刊 强化学习作为人工智能领域研究热点之一,其研究进展与成果也引发了众多关注.为帮助研究与工程人员了解该领域的相关进展和 ...

  7. Multi-task Learning(Review)多任务学习概述

    https://www.toutiao.com/a6707402838705701383/ 背景:只专注于单个模型可能会忽略一些相关任务中可能提升目标任务的潜在信息,通过进行一定程度的共享不同任务之间 ...

  8. java 内存映射文件进程间通讯_[转]Windows环境下利用“共享内存”实现进程间通信的C/C++代码---利用CreateFileMapping和MapViewOfFile...

    进程间的通信方式有很多种, 上次我们说了最傻瓜的"共享外存/文件"的方法. 那么, 在本文中, 我们即将学习"共享内存"的方式实现进程间的通信, 这是IPC最快 ...

  9. [译]深度神经网络的多任务学习概览(An Overview of Multi-task Learning in Deep Neural Networks)...

    译自:http://sebastianruder.com/multi-task/ 1. 前言 在机器学习中,我们通常关心优化某一特定指标,不管这个指标是一个标准值,还是企业KPI.为了达到这个目标,我 ...

最新文章

  1. 算法基础(09)— 字符串常用操作
  2. Linux上隐藏进程名(初级版)
  3. SQL Server 2016新特性:列存储索引新特性
  4. 论场景在研发中的重要性
  5. 他是我们内心世界的一员 (见信息时报2011年7月10日)
  6. php执行zip压缩,PHP执行zip与rar解压缩方法实现代码
  7. STM32之RCC配置
  8. VMware里Ubuntu-14.04-desktop的VMware Tools安装图文详解
  9. 容器安全 - 通过SECCOMP过滤在容器中的风险操作
  10. 【iOS】Ambiguous reference to member 'tableView(_:numberOfRowsInSection:)'
  11. Linux下编译安装Jsoncpp及应用实例
  12. texstudio统计字数
  13. 网络测量工具及其使用
  14. 关于累加偶数奇数的c语言程序,c语言 在1-100之间,求所有奇数和偶数的个数和所有奇数和偶数的和(写到一个里面)...
  15. 项目2:数据可视化(五)绘制世界人口地图
  16. SecureCrt 连接服务器失败 key exchange failed 解决方案
  17. 【英语:发音基础】A1.元音与辅音
  18. EditPlus工具添加XML格式化插件
  19. 计算机终桌面操作系统,支持国产电脑操作系统,光威、中兴新支点桌面系统首次触电...
  20. 魔兽世界服务器维护后 猎人宝宝,9.0猎人全宠物刷新地点 猎人宝宝刷新点大全...

热门文章

  1. docker搭建tensorflow环境
  2. ld: warning: cannot find entry symbol _start; defaulting to 00000000004002a0
  3. amd 开核型号及匹配主板
  4. 日韩潮流千鸟格流苏披肩
  5. 一滴泪水能够承载多少的爱?
  6. AMEYA360电子元器件IC是怎样的 ic分类及知识大全
  7. 数字炸弹(shell)
  8. [转载]velocity模板加载
  9. 浅谈 TWAIN 标准
  10. PaddleOCR在文字检测方面上存在问题