算法 [ 基本工具和优化技巧 ]

循环与递归

构造出“不变式”的“循环条件”、“循环体”。

循环设计要点;1. 设计要注意算法的效率 累加、累乘 2. “自顶向下”的设计方法:先整体后局部,先抽象后具体

递归设计要点:一个过程或函数在其定义或说明中直接或间接调用自身的一种方法,找出递归关系和递归终止条件。分析问题、寻找递归关系,设置边界、控制递归,设计函数、确定参数。

hanoi(n,a,b,c)

第一步:先把上面“一个“盘子以a基座为起点借助b基座移到c基座       hanoi(n-1, a, c, b)

第二步:把下面一个盘子从a基座移动到b基座                                      

第三步:再把c基座上的”一个“盘子借助a基座移到b基座                        hanoi(n-1, c, b, a)

递归算法比循环算法耗费更多的时间和存储空间,也限制了递归的深度----->转为等价的循环,提高算法的时空效率;树的前中后序遍历、图的深度优先,”后进先出“用递归算法

具体考虑内容:

1. 逻辑结构表示数据3个层次:数据项、数据元素、数据元素的关系

2. 逻辑结构便于存储实现

3. 存储方式选择,考虑数据的规模

4. 数据结构一定要方便处理功能的实现

5. 数据结构还要便于提高算法的时空性能

6.连续存储:基于存储的考虑,顺序表过大造成浪费,过小造成溢出;基于运算的考虑,顺序表访问O1,链式表访问On;基于环境的考虑,查询统计选顺序存储,插入、删除选链式存储

  • 原始信息与处理结果对应存储:拉选票
  • 数组是信息有序化:将35706翻译成”three-five-seven-zero-six“,找零钱
  • 数组记录状态信息
  • 大整数存储与运算
  • 标记量妙用

优化算法的数学模型

n次二项式各项的系数                   --------->   杨辉三角的应用

数组中n个数据向后移k位             --------->   最大公约数的应用

爬楼梯,每次上一阶或者二阶     --------->   斐波那契数列

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值