数据结构主要研究结点(数组、链表、树、图)和结点之间的关系 或者 说指数据对象中数据元素之间的关系 或者(专业术语:非数值计算程序问题中的操作对象以及他们之间的 关系); 不是研究复杂的算法;
数据结构中的基本概念:
数据——程序的操作对象,用于描述客观事物; 特点:可以输入到计算机;可以被计算机程序处理;(比如:int a,.int b 就是数据)
数据对象——性质相同的数据元素的集合 (比如:数组、链表; Teacher array[10]、int array2[10])
数据元素——组成数据的基本单位; (比如:array[0]、array[1]、array[2]) 一个一个的结点;
数据项——一个数据元素由若干个数据项组成; (比如: )
struct Teacher
{
int age;
char name[64]; age、name 就是两个数据项
}
数据结构的逻辑关系:指数据元素之间的逻辑关系,即从逻辑关系上描述数据,它与数据的存储无关,是独立于计算机的,逻辑结构课细分为 4 类:
集合 ——数据元素间 除“同属于一个集合”外,无其他关系(散列)
线性结构——一个对一个,如线性表、栈、队列
树形结构——一个对多个,如 树
图状结构——多个对多个,如 图
数据的物理结构:亦称存储结构,是数据的逻辑结构在计算机存储器内的表示(或映像)。它依赖于计算机。可分为 4 大类:
顺序:借助元素在存储计算器中的相对位置来表示数据元素间的逻辑关系
链式:借助指示元素存储地址的指针表示数据元素间的逻辑关系
索引: 散列:
数据的逻辑结构与存储结构密切相关
算法设计 → 逻辑结构
算法实现 → 存储结构
数据的运算:(操作或处理)在数据的逻辑结构上定义的操作,它在数据的存储结构上实现; 5 种 运算:插入、删除、修改、查找、排序;
算法:特定问题的求解步骤的描述;
算法和数据结构的区别:程序 = 数据结构 + 算法;它们两个相辅相成;
算法特性:
输入: 算法具有0个或多个输入;
输出:算法至少有1个或多个输出;
有穷性:算法在有限的步骤之后会自动结束而不会无限循环;
确定性:算法中的每一步都有确定的含义,不会出现 二义性;
可行性:算法的每一步都是可行的;
算法效率的度量:事后统计法;事前分析估算法;
大O 表示法:
例: 2n+4 → O(n)、n+2 → O(n)、2 →O(1);
O(1)<O(logn)<O(n)<O(n logn)<O(n^2)<O(n^3)<O(2^n)<O(n!)<O(n^n)
时间换空间;空间换时间;
线性表设计:
线性表的定义:零个或者多个数据元素的集合;数据元素之间是有顺序的;数据元素个数是有限的;数据元素的类型必须相同;
未完成。。。。。。
网友评论