一、基本数据结构:
基本数据结构的定义、特性、运算、算法。
基本数据结构的分类(逻辑结构):
(1)线性结构:线性表、栈、队列、双队列、数组、广义表、串
(2)非线性结构:树、二叉树、图、网
存储结构:
(1)顺序存储:向量、一维数组
(2)链式存储:链表
二、算法:
查找:顺序、折半、分块、哈希、二叉排序树
排序:直接插入、冒泡、选择、希尔、快速排序、堆排序、2-路归并、基数排序
算法分析:
时间复杂度:算法的时间开销相对于问题规模的变化趋势
T(n)=O(f(n))
n:问题的规模 f(n):基本操作执行次数总和 。 常见的时间复杂度类型:常量阶、线性阶、平方阶、对数阶、指数阶
O(1)、O(n)、O(n的平方)、O(log2n)、O(nlog2n)、O(2的n次方)
冒泡排序最好、最坏时间复杂度:
void bubble(int a[],int n)
{
int i,j,temp;
for(i=1;i<n;i++) // n-1
for(j=0;j<n-i;j++) // n-1+n-2+n-3+...+1=n(n-1)/2
if(a[j]>a[j+1]) // n(n-1)/2
{
temp=a[j]; // 0或n(n-1)/2
a[j]=a[j+1]; //0或n(n-1)/2
a[j+1]=temp; //0或n(n-1)/2
}
for(i=0;i<n;i++) // n次
printf("%d ",a[i]); // n次
}
1.2.3.4.5 5.4.3.2.1
最好情况:f(n)=n*n+2n-1 O(n*n) 最坏情况:f(n)=5n*n/2+n/2-1 O(n*n)
空间复杂度:
三、数据结构:
相互之间存在一种或多种特定关系的数据元素的集合。
Data_Structure=(D,S) D:数据元素的集合 S:关系的集合
4种基本结构:集合、线性结构、树、图状结构