数据结构与算法

开发工具与关键技术:后端
作者:汪
撰写时间:2020年4月28日
一、算法
1.算法的定义:算法是指解题方案的准确而完整的描述。
2.算法的基本特性
(1)有穷性:一个算法应包含有限个操作步骤。
(2)确定性:算法中的每一步都必须有确切的含义,不能产生二义性。
(3)可行性:算法中的每一个步骤都应该是能有效的执行,并得到确定的结果。
(4)输入:所谓输入,是指在算法执行时,从外界取得必要的数据。
(5)输出:一个算法有一个或多个输出,这是算法进行数据处理后的结果
3.算法设计的要求
①正确性:算法正确性是指算法达到了测试要求。
②可读性:指人对算法阅读理解的难易程度,可读性高的算法便于交流,有利于算法的调试和修改。
③健壮性:对于非法的输入数据,算法能给出相应的响应,而不是产生不可预料的后果。
④效率与低储存需求:效率指的是算法的执行时间。对于解决同一问题的多个算法,执行时间短的算法效率高。存储量需求指算法执行过程中所需要的最大存储空间。存储量需求越小的算法效率越高。
3.算法的时间和空间复杂度
①时间复杂度:是指执行算法所需要的计算工作量,可以用算法所执行的基本运算次数度量。
②空间复杂度:是指执行算法所需要的内存空间。包括算法程序、输入的初始数据以及算法执行过程中需要的额外空间。
③算法的时间复杂度和算法空间复杂度相互独立。
二、数据结构基本概念
1.数据:需要处理的数据元素的集合,一般来说,这些数据元素,具有某个共同的特征。
a.数据元素是数据的基本单位,即数据集合中的个体。
b.有时一个数据元素可有若干数据项组成。数据项是数据的最小单位。
2.结构:是集合中各个数据元素之间存在的某种关系。
3.数据结构:是指相互有关联的数据元素的集合。
4.数据结构的分类
(1)逻辑结构:反应数据元素间的逻辑关系(即前后件关系)的数据结构。
逻辑结构也分为两种:线性结构(线性表、栈、队列);非线性结构(树、图、集合)。
①线性结构(线性表):(举例:春→夏→秋→冬)
a.有且只有一个根节点,它无前件;
b.每一个节点最多有一个前件,也最多有一个后件。
②非线性结构
a.不满足以上两个条件的数据结构就称为非线性结构;
b.非线性结构主要是指树形结构和网状结构。

(2)存储结构:又称为数据的物理结构,是数据的逻辑结构在计算机存储空间中存放方式。存储结构也分为四种:
①顺序存储结构:主要用于线性的数据结构,它把逻辑上相邻的数据元素存储在物理上相邻的存储单元里。
②链式存储结构:每一个节点至少包含一个指针域,用指针的指向来体现数据元素之间在逻辑上的联系。
③索引存储结构:在内存中不仅仅要存放每一个数据元素,还要建立一张索引表。
④散列存储结构:又称为哈希存储,它是通过关键字的相应函数运算直接求得对应数据元素的地址。

(3)运算
①插入:往数据中添加新的节点。
②删除:把指定的节点从数据结构中去掉。
③更新:改变指定节点的一个或多个字段的值。
④排序:把节点按某种指定的顺序重新排序。
⑤检索:就是在数据结构里查找满足一定条件的节点。一般是给定一个某字段的值,找具有该字段值的节点。

你可能感兴趣的:(数据结构与算法)