数据结构与算法系列文章目录
文章目录
一、数据结构概述
数据结构应包括3个方面:数据的逻辑结构、数据的存储结构、数据的运算集合。
数据元素和数据元素之间的相互关系
1.逻辑结构
数据的逻辑结构是指数据元素之间逻辑关系的描述。如邻接、从属关系
根据数据元素之间关系的不同特性,可以分为4中基本的逻辑结构:
逻辑结构 | 关系 |
---|---|
集合结构 | 结构中的数据元素间除了同属于一个集合的关系外,无其他关系 |
线性结构 | 结构中的数据元素间存在者一对一的线性关系 |
树形结构 | 结构中的数据元素间存在者一对多的层次关系 |
图状结构或网状结构 | 结构中的数据元素间存在者多对多的任意关系 |
根据逻辑结构是否线性也可以细分为:
2.存储结构
(1)定义
存储结构也称物理结构,是逻辑结构在计算机中的存储映像,是逻辑结构在计算机中的实现(或存储表示),它包括数据元素的表示和关系的表示。
顺序存储、链接存储、索引存储、散列存储
对于每一个数据元素都对应有存储空间中的一个单元,全部数据元素对应的存储单元间必须明显或隐含地体现其关系。
逻辑结构与存储结构的关系是,存储结构是逻辑结构的映像与元素本身的映像。逻辑结构是抽象,存储结构是实现,两者综合起来建立了数据元素之间的结构关系。
(2)关于映像
数据元素之间的关系在计算机中有两种不同的表示方法——顺序映像(顺序存储结构)和非顺序映像(非顺序存储结构)。
数据结构在计算机中的映像,包括——数据元素映像和关系映像。
关系映像在计算机中也有两种不同的表示方法——采用顺序存储结构和非顺序存储结构
3.运算集合
对数据的增加、删除、修改等的操作集合。
基本术语概念
-
数据:
数据(Data)即信息的载体,是能够输入到计算机中并且能被计算机识别、存储和处理的符号总称。
描述客观事物的数值、字符,以及所有其他能输入到计算机中,且能被计算机处理的各种符号的集合。即计算机化的信息、存储在计算机中的信息。 -
数据元素与数据项:
- 数据元素(Data Element)是组成数据的基本单位,是数据集合的个体,在计算机中通常作为一个整体进行考虑和处理。数据元素可由一个或多个数据项组成。
- 数据项是具有独立含义的数据的最小单位。
-
数据对象
数据对象是性质相同的数据元素的集合,是数据的一个子集。 -
数据类型
数据类型(Data Type)是一组性质相同的值集合,以及定义在这个值集合上的一组操作的总称。按“值”的不同特性,可以分为两大类——非结构的原子类型和结构类型。
二、算法和算法分析
1.算法及算法描述
定义:算法是对特定问题求解步骤的一种描述,是指令的有限序列,其中每一条指令表示一个或多个操作。具有以下5大特性:
- 有穷性
- 确定性
- 可行性
- 输入
- 输出
2.算法设计的要求
- 正确性
- 可读性
- 健壮性:对于非法的输入数据,算法可以给出相应的响应,而不是产生不可预料的后果。
- 效率与低存储量需求:
- 效率指算法的执行时间,执行时间越短效率越高;
- 存储量需求指算法执行过程中所需要的最大存储空间。
3.算法分析
(1)算法效率的度量
程序在计算机上运行所需时间与下列因素有关:
- 算法本身所用的策略
- 书写程序的语言
- 编译产生的机器代码质量
- 机器执行指令的速度
- 问题的规模
度量一个算法的效率应抛开具体机器的软硬件环境,只考虑算法本身的效率和问题规模。而算法本身的效率是问题规模的函数。
对同一个问题,选用不同策略就对应不同的算法,不同的算法对应有各自的问题规模函数,根据这些函数就可以比较解决同一个问题的不同算法的优劣
(2)算法的时间复杂度
- 一个算法的执行时间大致上等于其所有语句执行时间的总和;
- 语句的执行时间是指该条语句的执行次数和执行一次所需时间的乘积;
- 语句频度Frequency Count)是指语句在一个算法中重复执行的次数;
用算法中语句的执行次数来度量一个算法的效率
时间复杂度分为以下几种常见类型:
- 常数阶时间复杂度:O(1)
- 线性阶时间复杂度:O(n)
- 平方阶时间复杂度:O(n2)
- 对数阶O( log 2 \log_2 log2n)
- O(n*m)
(3)最坏时间复杂度
算法中的基本操作重复执行次数还随问题的输入数据集的不同而不同。
(4)常见的时间复杂度
大佬写的立方阶时间复杂度详解:立方阶时间复杂度
(5)空间复杂度
算法执行的高效通常是由增加辅助空间为代价的,反之亦然。
原地工作
算法执行时所需要的辅助空间相对于输入数据量而言是个常数,则称算法为原地工作,辅助空间为O(1)。