数据结构与算法介绍

作者: LiGm | 来源:发表于2017-07-21 10:05 被阅读45次

笔记转自siki数据结构与算法,视频教程可在泰课在线网上观看

为什么要学习数据结构?

同样的问题,有的人写出来的程序效率高,有的人却用很复杂的方法解决。
学习数据结构能用最有效的方法解决绝大多数的问题。

《数据结构》这门课程的目的有三个。

  • 第一个是讲授常用的数据结构,这些数据结构形成了程序员基本数据结构工具箱(toolkit)。对于许多常见的问题,工具箱里的数据结构是理想的选择。就像.NET Framework 中 Windows 应用程序开发中的工具箱,程序员可以直接拿来或经过少许的修改就可以使用,非常方便。
  • 第二个是讲授常用的算法,这和数据结构一样,是人们在长期实践过程中的总结,程序员可以直接拿来或经过少许的修改就可以使用。可以通过算法训练来提高程序设计水平
  • 第三个目的是通过程序设计的技能训练促进程序员综合能力的提高。

数据结构是程序员的内功修炼的一部分


一、基本概念和术语

1.数据(Data)

计算机程序处理各种各样的数据,可以是数值数据,如整数、实数或复数;也可以是非数值数据,如字符、文字、图形、图像、声音等。

2.数据元素(Data Element)和数据项(Data Item)

数据元素是数据的基本单位,在计算机程序中通常被作为一个整体进行考虑和处理。一个数据元素可由若干个数据项(Data Item)组成。

数据项是不可分割的、含有独立意义的最小数据单位,数据项有时也称为字段(Field)或域(Domain)。

例如,一条学生记录就是一个数据元素。这条记录中的学生学号、姓名、性别、籍贯、出生年月、成绩等字段就是数据项。数据项分为两种,一种叫做初等项,如学生的性别、籍贯等,在处理时不能再进行分割;另一种叫做组合项,如学生的成绩,它可以再分为数学、物理、化学等更小的项。

3.数据对象(Data Object)

数据对象是性质相同的数据元素的集合, 是数据的一个子集。例如,整数数据对象是{0,±1,±2,±3,…},字符数据对象是{a,b,c,…}。

4.数据类型(Data Type)

数据类型是高级程序设计语言中的概念,是数据的取值范围和对数据进行操作的总和。数据类型规定了程序中对象的特性。程序中的每个变量、常量或表达式的结果都应该属于某种确定的数据类型。

例如,C#语言中的字符串类型( String,经常写为 string)。一个 String 表示一个恒定不变的字符序列集合,所有的字符序列集合构成 String 的取值范围。我们可以对 String 进行求长度、复制、连接两个字符串等操作。

二、数据结构分类 (Data Structure)

数据结构是相互之间存在一种或多种特定关系的数据元素的集合。在任何问题中,数据元素之间都不是孤立的,而是存在着一定的关系,这种关系称为结构(Structure)。

根据数据元素之间关系的不同特性,通常有 4 类基本数据结构:
 (1) 集合(Set):如图(a)所示,该结构中的数据元素除了存在“同属于一个集合”的关系外,不存在任何其它关系
 (2) 线性结构(Linear Structure):如图(b)所示,该结构中的数据元素存在着一对一的关系
 (3) 树形结构(Tree Structure):如图(c)所示,该结构中的数据元素存在着一对多的关系
 (4) 图状结构(Graphic Structure):如图(d)所示,该结构中的数据元素存在着多对多的关系

image.png

什么是算法?

算法可以理解为有基本运算及规定的运算顺序所构成的完整的解题步骤。或者看成按照要求设计好的有限的确切的计算序列,并且这样的步骤和序列可以解决一类问题

算法和数据结构的关系

数据结构可以认为是数据在程序中的存储结构,和基本数据操作
算法可以认为是解决问题的,算法是基于数据结构的

数据结构是问题的核心,是算法的基础。

算法的评价标准

运行时间(Running Time)。
占用空间(Storage Space)。

有时需要牺牲空间来换取时间,有时需要牺牲时间来换取空间。

其他方面:正确性(Correctness)、可读性(Readability)、健壮性(Robustness)

相关文章

  • 最新完整数据结构与算法

    最新完整数据结构与算法 P11_课程介绍 P22_数据结构与算法概述_数据结构 P33_数据结构与算法概述_算法 ...

  • 动态规划-js

    动态规划 参考:算法分析与设计-贪心&动归 漫画:什么是动态规划? 【数据结构与算法】 DP 动态规划 介绍 介绍...

  • 数据结构与算法 - 查找

    数据结构与算法系列文章数据结构与算法 - 时间复杂度数据结构与算法 - 线性表数据结构与算法 - 树形结构数据结构...

  • 思维导图之数据结构+算法

    数据结构+算法 = 程序 数据结构比较 参考文章 数据结构与算法数据结构与算法(java)

  • 数据结构与算法 - 树形结构

    数据结构与算法系列文章数据结构与算法 - 时间复杂度数据结构与算法 - 线性表数据结构与算法 - 树形结构 目录 ...

  • 数据结构与算法 (Kotlin语言描述) / 陈光剑

    《数据结构与算法 (Kotlin语言描述)》/ 陈光剑 内容简介 本书主要介绍基本数据结构以及相关的经典算法,强调...

  • 数据结构与算法--最小生成树之Kruskal算法

    数据结构与算法--最小生成树之Kruskal算法 上一节介绍了Prim算法,接着来看Kruskal算法。 我们知道...

  • 实用数据结构与算法

    前言   本文主要介绍在现实生产环境使用较多的高效搜索数据结构与算法。空间、性能、实现复杂度一直都是数据结构与算法...

  • 数据结构与算法

    数据结构与算法之美 数据结构与算法之美1--如何学数据结构与算法之美2--复杂度分析(上)数据结构与算法之美3--...

  • 计算机常用英语词汇 —— 数据结构与算法

    本文为转载,原文:计算机常用英语词汇 —— 数据结构与算法 1. 介绍 本文将列出计算机学当中,数据结构与算法相关...

网友评论

    本文标题:数据结构与算法介绍

    本文链接:https://www.haomeiwen.com/subject/gxpskxtx.html