《数据结构与算法》——数据结构基础

基本概念:
数据:所有能被计算机识别的符号集合
数据元素:是数据(集合)中的一个“个体”,数据结构讨论的基本单位
数据项:数据结构讨论中的最小单位,数据元素也可以是数据项的集合
例如:一个运动员数据元素可以是:
姓名、俱乐部名称、出生日期(年、月、日)、参赛日期、成绩、名次
数据对象:具有相同性质的数据元素的集合,是数据的一个子集。
例如:迷宫数据对象中数据元素是一个个点

在这里插入图片描述
Data_Structure=(D,L,S,O)
D:是数据元素的有限集,是存储和操作的对象
L:是数据元素集合D中数据元素之间客观存在的关系的有限集,称为逻辑结构。
S:是数据元素集合D和数据元素之间的关系的集合L在计算机中的存储表示,称为存储结构或物理结构。
O:是在数据元素集合D上规定的一组操作。
逻辑结构:
1、线性结构:一对一
2、树形结构:一对多
3、图形结构(网状结构):多对多
4、集合结构:极为松散
其中,非线性结构为树形结构和图形结构
存储机构:
1、顺序存储:把逻辑上相邻的元素存储在物理位置相邻的存储单元中。
特点:存储数据速度快,每个数据访问速度相同。
2、链式存储:在数据元素中添加一些地址域或辅助结构,用于存放数据元素之间的关系。
特点:频繁地插入、删除或更新时速度较快,相较于顺序结构更节省空间
在这里插入图片描述
ADT(抽象数据类型):
一般包含数据元素、数据元素之间关系、操作三要素,即(D,R,O)
特点:抽象性、扩展性
定义格式`

  ADT<抽象数据类型名>
  {
  数据对象:<数据对象的定义>
  数据关系:<数据关系的定义>
  基本操作:<基本操作的定义>
  }ADT 抽象数据类型名`

时间算法复杂度分析T(N,I):
算法的执行效率就是各个语句执行的次数,一个算法中的语句执行次数记为T(n)。
算法的基本操作重复执行的次数是模块n的某一个函数f(n),因此,算哒的时间复杂度记作T(n)=O(f(n))。
例如:

for(i=0;i<n-1;i++){
    j=i;
    for(k=i+1;k<n;k++){
        if(a[k<a[j] j=k;
        }
    }

第一层循环执行n次,第二层循环执行n次,if语句执行次数为n^2
次。即T(n)=n^2。

最大子序列和问题
解法一:

int Maxsum(int a[],int n){
	int maxsum,j,thisnum;
	maxsum=0;//最大子和置为0 
	thisnum=0;//当前子和置为0 
	for(j=0;j<n;j++){
		thisnum+=a[j];//对当前子和进行累加 
		if(thisnum>maxsum)//若当前子和大于最大子和,则对最大子和重新赋值。 
			maxsum=thisnum;
		else if(thisnum<0) 
		    thisnum=0;
		}
		return maxsum; 
	}

解法二:

int Maxsum(int a[],int n){
	int maxsum,i,j,thisnum;
	maxsum=0;//最大子和置为0 
	for(i=0;i<n;i++){
		thisnum=0;//当前子和置为0 
	    for(j=i;j<n;j++){
		    thisnum+=a[j];//对当前子和进行累加 
		    if(thisnum>maxsum)//若当前子和大于最大子和,则对最大子和重新赋值。 
			    maxsum=thisnum;
		}
    }
		return maxsum; 
}

解法一时间复杂度为O(n),解法二为O(n^2)。

考点题型:
1、
i=s=0;
while(s<n){
i++;
s+=i;
}
以上程序段的时间复杂度是O(sqrt(n))。
2、
i=1;
while(i<=n)
i=i*3;
以上程序段的时间复杂度是O(logn)。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值