第1章 绪论
1.1 什么是数据结构
简单来说,数据结构是一门研究非数据计算的程序设计计算程序设计问题中计算机的操作对象以及他们之间的关系和操作等的学科
通俗来说,数据结构所研究的是程序的原理:操作流程、所涉及的参数、参数之间的关系等
1.2 基本概念和术语
数据:
数据元素:
数据对象:
数据结构:
逻辑结构:
物理结构(存储结构):
位:
元素(节点):
顺序映像:
程序映像:
数据类型:抽象数据类型 原子类型 固定聚合类型 可变聚合类型 多形数据类型
1.3 抽象数据类型的表示和实现
(1)预定义常量和类型
(2)数据结构的表示(存储结构)用类型定义(typeof)描述
(3)基本操作的算法都应用以下形式的函数描述
函数类型 函数名(函数参数表){
//算法说明
语句序列
}//函数名
(4)赋值语句
(5)选择语句
(6)循环语句
(7)结束语句
(8)输入和输出语句
(9)注释
(10)基本函数
(11)逻辑运算约定:与、或
1.4 算法和算法分析
1.4.1 算法
算法是对特定问题求解步骤的一种描述,它是指令的有限序列,其中每一条指令表示一个或多个操作;
此外,一个算法还具有以下五个重要性质:
(1)有穷性:一个算法总是在有限步后结束,且每一步都在有限时间内完成(等价于算法的执行时间为有限值)
(2)确定性:算法中每一条指令必须有明确的含义
(3)可行性:算法中描述的步骤都是可以通过已经实现的基本运算执行有限次的来实现的
(4)输入:一个算法有零个或者多个的输入(输入待处理的数值)
(5)输出:一个算法有零个或者多个的输出(输出所需要的结果)
1.4.2 算命设计的要求
通常设计一个好的算法应考虑达到以下目标:
(1)正确性:算法应满足目标问题的需求
(2)可读性:可以简单理解为需要在算法程序中加入适量且恰当的注释
(3)健壮性:对于程序来说,在运行发生错误时,应该以某种形式返回错误信息(类似于React框架--会明确的提示错误类型以及错误代码的具体位置)
(4)效率与低存储需求(时间与空间效率)
1.4.3 算法效率的度量
主要有两种方式:
(1)事后统计的方式
这种方式有两点缺陷:
<1>必须先运行依据算法编程的程序
<2>所得时间的统计量依赖于计算机的硬件、软件等环境因素,又是容易掩盖算法本身的优劣
(2)事前分析估算的方法
一个用高级程序语言编写的程序在计算机上运行所消耗的时间取决于下列因素:
<1>依据的算法选用何种策略
<2>问题的规模
<3>书写程序的语言
<4>编译程序所产生的机器代码的质量
<5>机器执行指令的速度
1.4.4 算法的存储空间需求
主要考虑以下三点:
(1)输入数据所占空间
(2)程序本身所占空间
(3)辅助变量所占空间