暑期数据结构第一天
数据元素与数据对象
数据元素--组成数据的基本单位
与数据的关系:是集合的个体
数据对象--性质相同的数据元素的集合
与数据的关系:集合的子集
逻辑结构
(1)线性结构,所有结点都最多有一个直接前趋和一个直接后继。(线性表、栈、队列、串)
(2)非线性结构,一个结点可能多个直接前趋个直接后继,树和图
顺序存储结构
链接存储结构
使用指针来实现
索引存储结构
散列存储结构
根据结点的关键字直接计算出该结点的存储地址
抽象数据类型(ADT)
时间复杂度
顺序结构:时间复杂度为O(1)
单层循环:循环执行n次,时间复杂度为O(n)
嵌套循环:
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
// 基本操作
}
}
内外循环分别执行n次,总共 n*n 次,时间复杂度为O(n^2)
递归
void binarySearch(int n) {
if (n <= 1) return;
binarySearch(n / 2);
}
每次规模减半,时间复杂度为O(log n)
分治递归
void divide(int n) {
if (n <= 1) return;
divide(n / 2);
divide(n / 2);
}
时间复杂度是由嵌套最深层语句的频度决定的。



