算法知识点总结——算法分析基础

算法=程序+数据结构

同样的问题往往可以用多种算法来解决。(中学时代作文指导老师经常说:“答案是丰富多彩的”。很多生活中的事情都是这样的)

例如:求两个数的最大公约数:

(1)欧几里得算法:gcd(m,n)=gcd(n,m%n)当m%n==0时,”n“的值即是所求。

(2)连续整数检测算法:当一个输入为0时候,就会出错

  • 将min{m,n}赋值给t
  • m/t,如果余数为0,进入第三步,否则进入第四步
  • n/t,如果余数为0,则t就是所求,否则进入第四步
  • 将t-1,返回第二步

(3)中学时代的公共质因数算法

  • 找到m的所有质因数
  • 找到n的所有质因数
  • 找出m和n的所有公因式
  • 将公因式相乘即得所求。

如何求解质因数:

利用“埃拉托色筛选法”:

  • 初始化2~n的连续数列
  • 第i个循环中消去i的倍数
  • 直到序列中没有可消的元素为止,挣下的整数便是质数序列。

现在已经有许多改进版本的“埃拉托色筛选法”。这里便不再一一赘述了。

算法求解问题基础:

  • 对于给定的问题有完全的理解(考虑特殊情况;了解已有的算法的优缺点等)
  • 了解计算设备的性能(输入为海量数据;对于时间敏感的应用;...)
  • 在精确解法和近似解法中做出选择(有时近似算法可以作为精确算法的一部分)
  • 算法的设计技术(分治法;蛮力法;变治法;减治法;...)
  • 确定适当的数据结构
  • 对算法进行描述(文字,伪代码,流程图...)
  • 算法正确性的证明(数学归纳法;反向迭代法;近似算法的误差不超出预定义的范围即可)
  • 算法分析(时间复杂度;空间复杂度;简单性;一般性)
  • 为算法写代码(一个好的算法是不断修正的结果)

重要的问题类型

  • 排序(对键排序:稳定(各自先后顺序不变);在位(不占用额外的存储空间))
  • 查找(寻找查找键)
  • 字符串处理(字符串匹配等问题)
  • 图问题(遍历;最短路线;有向图的拓扑排序;旅行商;图填色问题等)
  • 组合问题
  • 几何问题(最近对问题;凸包文图等)
  • 数值问题(实数在计算机中只能近似表示,则近似数的大量计算可能使舍入的误差叠加,结果歪曲)

基本的数据结构

  • 线性数据结构:数组、链表、栈和队列...
  • 图(邻接矩阵;邻接链表)
  • 集合与字典

 

转载于:https://www.cnblogs.com/wongyi/p/7722205.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值