个人算法小结

第一章

时间复杂度:

		指算法运行的速度。但由于机器硬件、软件以及问题规模等因素,同样的算法在不同机器、
	不同规模下速度不一样。为统一分析算法的时间效率或者速度,用基本操作的执行次数来度量
	算法的时间效率。这其中,又以执行频度最高的语句执行次数来衡量一个算法的随问题增长的
	阶数。

空间复杂度:

   是算法在运行过程中占用存储空间大小的度量。它包括三个方面:
   		1.存储算法本身所占用的存储空间
   		2.算法的输入/输出数据所占用的存储空间
   		3.算法在运行过程中临时占用的存储空间

常见的复杂度阶数:

		排序法		平均时间		最差情形		稳定度		额外空间		备注
		冒泡		O(n2 )		O(n2 )		稳定		O(1)		n较小时较好
		交换		O(n2 )		O(n2 )		不稳定		O(1)		n较小时较好
		选择		O(n2 )		O(n2 )		不稳定		O(1)		n较小时较好
		插入		O(n2 )		O(n2 )		稳定		O(1)		大部分已排序时较好
		基数		O(logR B)	O(logR B)	稳定		O(n)		B是真数(0-9),R是基数(个十百)
		Shell		O(nlogn)	O(ns )1<s<2	不稳定		O(1)		s是所选分组
		快速		O(nlogn)	O(n2 )		不稳定		O(nlogn)	n较大时较好
		归并		O(nlogn)	O(nlogn)	稳定		O(1)		n较大时较好
		堆			O(nlogn)	O(nlogn)	不稳定		O(1)		n较大时较好

第二章 算法设计基本策略

蛮力法:

亦称穷举法、暴力法。枚举出所有可能状态,然后在这些状态中找到所需的解

贪心法:

     该方法在每一步获得当前状态下最好的结果,通过使用局部最优解步步逼近的方式获得问题
全局的最优解。
	 贪心法并非完美的,因为有时问题的局部最优解无法逼近全局的最优解。

递归法:

	直接或间接的调用自身的算法称为递归算法。
	缺点:空间上的消耗大。

分治法:

	将一个规模较大的问题划分为规模较小的问题,分别解决小问题。
	三个基本步骤:
		1.将原问题分解为若干相同的子问题
		2.若子问题的规模容易解决则直接解决,否则继续分解。
		3.将子问题的解合并得到原问题的解。
	例子:汉诺塔问题

回溯法:

    在包含问题所有解的空间树中,按照***深度优先***的策略,从根节点出发搜索整个空间树,
    直到找到满足条件的所有解或解空间中已无活节点为止。

分支法:

	在包含问题所有解的空间树中,按照***广度优先***的策略,依次搜索扩展结点的所有分支,
	舍弃不满足约束条件的结点,并将其余节点加入活结表
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值