一、数据结构基本概念
1.数据:对客观事物的符号表示
数据元素:数据的基本单位
数据对象:性质相同的 数据元素 的集合
数据结构:相互之间存在一种或多种特定关系的数据元素的集合
2.数据元素之间的关系由两种表示:顺序映像和非顺序映像->顺序存储和链式存储
3.数据类型:是一个 值的集合 和定义在这个值集上的 一组操作 的总称
4.抽象数据类型:指一个数学模型以及定义在该模型上的一组操作
包括:定义,表现和实现三部分。(D,S,P)分别表示数据对象,关系集合,操作集合
分为:原子类型、固定聚合类型、可变聚合类型(长度可变)、多形数据类型
5.算法:指令的有限序列,包括:有序性、确定性、可行性、输入、输出
6.时间复杂度:一般指最坏情况下的时间复杂度
二、.线性表
①两个线性表LA,LB合并算法(伪代码) ——ExistElem()执行时间为O(LB),所以总该为O(LA*LB)
void union(List &La,List Lb){
La_len = La.length();
Lb_len = Lb.length();
for(i = 1;i<=Lb.length();i++){
Elem e = GetElem(Lb,i);
if(!ExistElem(La,e)) ListInsert(La,++La_len,e);
}
}
②两个递增有序排列,将LA与LB归并成一个LC,使得LC仍然递增——执行时间为O(LA+LB)
// 递增排序
private static ArrayList<Integer> unionSort(ArrayList<Integer> la, ArrayList<Integer> lb) {
ArrayList<Integer> lc = new ArrayList<>();
int i = 0, j = 0;
while (i < la.size() && j < lb.size()) {
if (la.get(i) <= lb.get(j)) {
lc.add(la.get(i));
i++;
} else {
lc.add(lb.get(j));
j++;
}