算法设计与分析——算法概论

这片文章主要是对概念的阐述记录

算法:解决问题的方法,是一种解决问题的清晰的指令,即:对某个问题,在一定规模的输入,在有限的时间之内,
	  获得符合要求的输出

算法特点:
	1、有 >= 0 个输入
	2、有 >= 1 个输出
	3、算法指令清晰,无歧义
	4、算法中的每条指令的执行次数和时间都是有限的

程序:算法的语言实现,可以是死循环,而算法必须是清晰的、有限的,所以算法不能是死循环

算法表示:
	1、自然语言(汉字描述)
	2、计算机语言:c++, c, java ---
	3、类计算机语言(伪码)

算法的复杂度(C(A,N,I)):代码执行时占用的计算机资源(空间,时间)的多少
	1)空间复杂度:S(A,N,I),简记 S(N, I)
		1、A表示某个算法(可省略不写)
		2、N表示输入规模
		3、I表示输入实例
	2)时间复杂度:T(A,N,I),简记 T(N, I)
		一般情况下,代码执行时间与具体的环境和操作系统等密切相关,所以将时间指标转化为主要操作执行
		的次数来衡量

主要运算(元运算):一般是比较、加法(A)、乘法(P),位置主要分布在循环中
					定义循环变量,循环变量的 ++ 操作一般不算在内

最坏复杂度:max(I ∈ Dn) (T(N, I)) = max(I ∈ Dn) ∑ei * ti	// ei 每个元运算的次数
															// ti 每个元运算的时间
															// 一般只统计一种元运算来说明复杂度
								   = Tmax(N, I*) // I*指占用空间最大的实例
								   记作 Tmax(N)
								   
最好复杂度:min(I ∈ Dn) (T(N, I)) = min(I ∈ Dn) ∑ei * ti
								   = Tmin(N, I~) // I~ 指占用空间最大的实例
								   				 注意:~ 应该画在 I 的上面
								   记作 Tmin(N)
								   
平均复杂度:Tavg(N) =p(I) * T(N, I)	// P(I) 实例 I 出现的概率
1、程序是算法的实现,算法是程序的灵魂
	程序 = 数据结构 + 算法
2、算法的复杂度有时与输入实例密切相关,这时就要考虑最坏、最好、平均复杂度。
3、A(n) 表示加法工作量,P(n) 表示乘法工作量
4、一般用来描述算法通常只描述他的最大的复杂度,最小的复杂度意义不是很大
5、代码量多的不一定复杂,代码量少的也不一定简单,公式法也不一定总是适用
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值