数据结构(Data Structure)是数据元素之间的关系,是复杂数据的组织方式。
1.数据结构三要素
数据结构三要素: 逻辑结构 存储结构 数据操作(算法)
逻辑结构
1.集合
2.线性
3.树形
4.网状(图)
Data_Structure =(D,R);
D是数据元素的有限集,R是D上关系有限集
存储结构
数据存储基本要求:存储元素必须反映数据元素本身及元素之间的逻辑关系。
对大量数据,必须有高效存储方法。
1.顺序存储
2.链式存储
数据操作(算法)
如最基本操作:增删查改。
2.抽象数据类型与算法
“抽象”的意义在于数据类型的数学抽象特性。
1.1什么是算法:最大公约数
input: unsigned int m,n
output: m,n的最大公因数
a. 求余数 r=mod(n/m) (0<=r<n)
b. r=0? r=0 输出n
c. 否则互换,m=n,n=r 转步骤a
1.2算法方略
1.穷举
2.递推与递归
3.分而治之
4.回溯
5.贪心
6.动态规划
1.3算法性能
正确性、可读性、健壮性、效率
算法复杂性:时间复杂度(cpu执行时间)、空间复杂度(占用内存)
1.4时间复杂度分析
Hanoi问题
A、B、C三个柱子,A柱上有n个大小不一的盘子,盘子由大到小从下到上放置,要求将A柱上的盘子移到C柱上,要求如下:
一次只能移动一只盘子;
可以借助三根柱子,但任何时候都不允许大盘子在小盘子上面
时间复杂度分析:
T(n)=2T(n-1)+1
T(1)=1
=>T(n)=
算法设计(第一个塔为初始塔,中间的塔为借用塔,最后一个塔为目标塔):
public void hanoi(int n,char A,char B,char C){
if(n==1) move(A,C);
else{
hanoi(n-1,A,C,B);//(n-1)个盘子A=>B
move(A,C);
hanoi(n-1,B,A,C);//(n-1)个盘子B=>C
}
}
转载请注明出处
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。