2

数据结构(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
    }
}

转载请注明出处


muddyway
10 声望3 粉丝