数据结构笔记(1)

来源:互联网 发布:centos u盘挂载 编辑:程序博客网 时间:2024/06/03 23:43

1、名词

数据元素:是组成数据有一点意义的基本单位。


数据项:一个数组元素可以由软干个数据项(数据不可分割的最小单位)组成。

 

数据对象:性质相同数据元素的集合,是数据的子集。。

2.算法

数据结构预算法相辅相成。

2.1比较两种算法

a.写出1+2+……+100结果程序

int i,sum=0,n=100;

for(i=1;i<=n;i++){

sum=sum+i;

}

printf("%d",sum);

但是考虑到效率问题,回忆怎样笔算,有了一种新思路——

int i = 0,sum = 0, n = 100;

sum=(1+n)*n/2;

printf("%d" , sum);


通过简化数学思路,提高代码运算量。

 

一般采用事前估计算法,而不是事后估计。

 

例如:上例计算求和算法:

前者N=1+(n+1)+n+1

后者:N=1+1+1

 

显然后者算法更优异。

 

算分运行时间:把基本操作数量和输入规模关联起来,基本操作的数量必须表示成输入规模的函数

3、算法复杂度

3.1

O(F(N))岁问题规模N的增大,算法执行时间的增长率和F(n)的增长率相同,称作算法渐进复杂度。简称时间复杂度。其中F(n)是问题规模n的某个函数。

O( )体现算法时间复杂度的记法,记做大O算法

 

O(N)线性阶

O(1)常数阶

O(N*N)平方阶

 

 

☆时间复杂度为O(logn)的经典算法的(2x=n)

int count=1;

while(count<n){

count=count*2;

}

 

 

O(1)<O(logn)<O(N)<O(nlogn)<O(N^2)<O(n^3)<O(2^N)<O(n!)<O(n^n)

 

3.2总结

算法特性:又穷、可行、确定、输入、输出

算法设计要求:正确、可读、健壮、高校、地存储

 

度量方法:事后统计(不科学),事前统计

 

函数渐进增长


0 0
原创粉丝点击