算法入门(一)

推荐阅读

智能化校园:深入探讨云端管理系统设计与实现(一)
智能化校园:深入探讨云端管理系统设计与实现(二)


算法

算法是指对特定问题求解步骤的一种描述。

它不依赖于任何一种语言,既可以用自然语言、程序设计语言(
C、C++、Java、Python等)描述,也可以用流程图、框图来表示。
采用伪代码来描述算法,“伪代码”介于自然语言和程序设计语言之间,它更符合人们的表达方式,容易理解,但不是严格的程序设计语言。

算法特性

  1. 有穷性:算法是由若干条指令组成的有穷序列,总是在执行若干次后结束,不可能永不停止。
  2. 确定性:每条语句有确定的含义,无歧义。
  3. 可行性:算法在当前环境条件下可以通过有限次运算实现。
  4. 输入输出:有零个或多个输入,一个或多个输出。

好的算法标准

  • 正确性
    算法能够满足具体问题的需求,程序运行正常,无语法错误,能够通过典型的软件测试,达到预期的需求。

  • 易读性
    算法遵循标识符命名规则,简洁易懂,注释语句恰当适量,方便自己和他
    人阅读,便于后期调试和修改。

  • 健壮性
    算法对于非法数据和操作应该有较好的反映和处理。

  • 高效性
    高效性是指算法运行效率高,即算法运行所消耗的时间短。

  • 低存储性
    低存储性是指算法所需要的存储空间低。

时间复杂度

时间复杂度:算法运行需要的时间,一般将算法的执行次数作为时间复杂度的度量标准。

for( i=1;i<=n;i++)//运行n+1次,判断最后不满足时的过程不能省略

时间复杂度
渐进上界(最坏情况)
渐进下界(最好情况)
渐进精确界(逼近的方式)


不是每个算法都能直接计算次数

在计算任何算法的时间复杂度时,可以忽略所有低次幂和最高次幂的系数,这样能够简化算法分析。

空间复杂度

空间复杂度:算法占用的空间大小。一般将算法的辅助空间作为衡量空间复杂度的标准。
算法占用的存储空间

  • 输入,输出数据;(一般不计算)
  • 算法本身;(可忽略不计)
  • 额外需要的辅助空间。

递归算法中,每一次递推需要一个栈空间来保存调用记录,因此,空间复杂度需要计算递归栈的辅助空间。

fac(int n)//计算n的阶乘
{
if(n<0)//小于零的数无阶乘值
{
printf("n<0,data error!");
return -1;
}
else if(n==0 ||n==1)
     return 1;
else
     return n*fac(n-1);
}

递归包括递推和回归。
递推是将原问题不断分解成子问题,直到达到结束条件,返回最近子问题的解;然后逆向逐一回归,最终到达递推开始的原问题,返回原问题的解。



栈 ,后进先出



在运算过程中,使用了n个栈空间作为辅助空间,因此将阶乘递归算法的空间复杂度为O(n),时间复杂度也为O(n).

在这里插入图片描述

相关推荐

  1. DP算法入门(3)

    2024-01-24 15:30:02       37 阅读
  2. 常用入门算法

    2024-01-24 15:30:02       41 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-01-24 15:30:02       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-01-24 15:30:02       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-01-24 15:30:02       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-01-24 15:30:02       18 阅读

热门阅读

  1. vue3中几种封装让后端传参请求方式

    2024-01-24 15:30:02       31 阅读
  2. 边缘计算:在挑战与机遇的浪潮中破浪前行

    2024-01-24 15:30:02       29 阅读
  3. 边缘计算的挑战和机遇

    2024-01-24 15:30:02       37 阅读
  4. Dart/Flutter工具模块:the_utils

    2024-01-24 15:30:02       40 阅读
  5. 《设计模式的艺术》笔记 - 备忘录模式

    2024-01-24 15:30:02       32 阅读
  6. Oracle中TO_DATE与TO_CHAR区别

    2024-01-24 15:30:02       38 阅读
  7. Oracle 数据库恢复删除的数据

    2024-01-24 15:30:02       41 阅读
  8. 软件工程测试3

    2024-01-24 15:30:02       34 阅读