C语言版数据结构-算法和算法分析

基本概念

数据:是所有能输入到计算机中并被计算机程序处理的符号的总称。
数据元素:是数据的基本单位,在计算机中通常作为一个整体进行考虑和处理。
数据项:是组成数据元素的、有独立含义的、不可分割的最小单位。
数据对象:是性质相同的数据元素的集合。
注:数据元素是数据项的集合;数据元素不是最小单位。
数据结构:是相互之间存在一种或多种特定关系的数据元素的集合。
逻辑结构:从逻辑关系上描述数据,它与数据的存储无关,是独立于计算机的。数据的逻辑结构可以看作是从具体问题抽象出来的数学模型。
存储结构(物理结构):数据对象在计算机中的存储。

注:同一逻辑结构采用不同的存储方法,可以得到不同的存储结构。

(集合结构:属于同一集合、线性集合:存在一对一的关系、树结构:存在一对多的关系、图结构或网状1结构:存在多对多的关系)

在这里插入图片描述
数据类型:是一个值的集合和定义在这个值集上的一组操作的总称。
抽象数据类型:一般指由用户定义的、表示应用问题的数学模型,以及定义在这个模型上的一组操作的总称。

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

算法的定义及特性

算法:是为了解决某类问题而规定的一个有限长的操作系列。
五个特性:有穷性、确定性、可行性、输入、输出
评价算法的优劣的基本标准:正确性、可读性、健壮性、高效性、

算法的时间复杂度

衡量算法效率的方法主要有两类:事后统计法和事前分析估算法

和算法执行时间相关的因素:
(1)算法选用的策略
(2)问题规模
(3)编写程序的语言
(4)编译程序产生的机器代码的质量
(5)计算机执行指令的速度

T(n)=O(f(n))
它表示随问题规模n的增大
,算法执行时间的增长率和f(n)的增长率相同
,称为时间复杂度。

常量阶:

for(i=0;i<10000;i++){
	x++;
	s=0;
}

线性阶:

for(i=0;i<n;i++){
	x++;
	s=0;
}

平方阶:

x=0;y=0;
for(k=1;k<=n;k++)
	x++;
for(i=1;i<=n;i++)
	for(j=1;j<=n;j++)
		y++;

空间复杂度

一个程序在机器上执行时,除了需要寄存本身所用的指令、常数、变量和输入数据外,还需要一些对数据进行操作的辅助存储空间,其中对于输入数据所占的具体存储量取决于问题本身,与算法无关。

S(n)=O(f(n))
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值