第一章:绪论

1.1数据结构基本概念

数据: 计算机程序加工的原料
数据元素: 数据的基本单位,由若干数据项组成
数据项: 数据元素不可分割的最小单位,例如:学生记录是数据元素,它由学号、姓名、性别等数据项组成
数据对象: 具有相同性质的数据元素的集合,是数据的一个子集,套用数学概念:数据是所有数,子集有整数集N,儿N在数据结构概念中叫整数数据对象
数据类型: 一个值的集合和定义在此集合上的一组操作的名称

  1. 原子类型:基本数据类型int、bool等
  2. 结构类型:自定义的结构,内涵多个基本数据类型
  3. 抽象数据类型 :抽象数据组织及与之相关的操作

数据结构: 相互之间存在一种或多种特定关系的数据元素的集合

1.2数据结构三要素

1.2.1数据的逻辑结构

  • 集合:没有关系,只是集合
  • 线性结构:一对一的关系
  • 树形结构:一对多的关系
  • 图状结构或网状结构:多对多的关系

1.2.2 数据的存储结构

  • 顺序存储:物理位置相邻
  • 链式存储:不要求物理位置相邻,借用指针
  • 索引存储:附加索引表记录存储位置,按表存储
  • 散列存储:哈希存储

1.2.3数据的运算

施加在数据上的运算包括定义和实现。运算的定义是针对逻辑结构的,指出运算的功能;运算的实现是针对存储结构的,指出运算的具体操作步骤。

1.3算法基本概念

对特定问题求解步骤的一种描述

1.3.1五个特性

  • 有穷性:一个算法必须总在执行有穷部之后结束,且每一步都可在有穷时间内完成
  • 确定性:对于相同的输入只能得出相同的输出
  • 可行性:执行有限次基本运算得到既定目标
  • 输入:零个或多个输入
  • 输出:一个或多个输出

1.3.2达到目标

  • 正确性:正确的解决求解问题
  • 可读性:帮助人理解
  • 健壮性:输入非法数据可以迅速做出反应,不能输出莫名奇妙的结果
  • 效率与低存储量需求

1.4时间复杂度

频度: 该语句在算法中被重复执行的次数
用频度分析时间复杂度
规则: 取阶数最高的,例如O(n2)+O(n)+1=O(n2)
常见时间复杂度阶数比较:常对幂指阶
O(1)<O(log2n)<O(n)<O(nlog2n)<O(n2)<O(n3)<O(2n)<O(n!)<O(nn)

void loveYou(int n){
	int i=1;//语句1
	while(i<=n){//语句2
		i++;//语句3
		printf("I Love You %d\n",i);//语句4
	}
	printf("I Love You More Than %d\n",n);//语句5
}
/*
语句频度:
1:——1次
2:——3001次
3和4:——3000次
5:——1次
T(n)=1+(n+1)+2n+1=3n+3=O(n)
*/

1.5空间复杂度

所耗费的存储空间
原地工作: 算法所需要的辅助空间为常量,即O(1)
递归算法空间复杂度通常为O(n)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

终究成为社畜

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值