栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

2021-10-06

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

2021-10-06

文章目录
  • 一、算法
  • 二、算法分析
    • 2.1 时间复杂度
    • 2.2 空间复杂度
  • 二、算法设计工具-STL
  • 总结


一、算法

定义:算法是求解问题的一系列计算步骤,用来将输入数据转换成输出结果。

算法设计目标:

  • 正确性
  • 可使用性
  • 可读性
  • 健壮性
  • 高效率与低存储量需求

算法特征:

  • 有限性
  • 确定性
  • 可行性
  • 输入性
  • 输出性

算法设计步骤:

  1. 分析求解问题
  2. 选择数据结构和算法设计策略
  3. 描述算法
  4. 证明算法正确性
  5. 算法分析

二、算法分析

定义:算法分析是分析算法占用计算机资源的情况。主要分析两个指标:时间复杂度和空间复杂度。

2.1 时间复杂度

定义:时间复杂度是指执行算法所需要的计算工作量,用于衡量算法的效率。

计算方法:根据算法,分析问题规模n,找出基本语句,求出其运行次数f(n),最后再用渐进符号表示。

提示:一个算法是由控制结构(顺序、分支和循环3种)和原操作(指固有数据类型的操作)构成的,算法的运行时间取决于两者的综合效果。

渐进符号
上界符号:


下届符号:


同阶符号:

算法执行时间

  1. 平均执行时间:
  2. 最好执行时间:
  3. 最坏执行时间:
2.2 空间复杂度

定义:空间复杂度(Space Complexity)是对一个算法在运行过程中临时占用存储空间大小的量度

计算:一个算法的存储量包括形参所占空间和临时变量所占空间。在对算法进行存储空间分析时,只考察临时变量所占空间。

二、算法设计工具-STL

定义:STL主要由container(容器)、algorithm(算法)和iterator(迭代器)三大部分构成,容器用于存放数据对象(元素),算法用于操作容器中的数据对象。

  1. 容器
    一个STL容器就是一种数据结构,如链表、栈和队列等,这些数据结构在STL中都已经实现好了,在算法设计中可以直接使用它们,如下图。

    提示:以上示例容器的c++语言为前提,使用时要在代码头部加入命名空间 “using namespace std”

  2. 算法
    STL算法是用来操作容器中数据的模板函数,STL提供了大约100个实现算法的模版函数。例如,STL用sort()来对一个vector中的数据进行排序,用find()来搜索一个list中的对象。
    STL算法部分主要由头文件、和组成。

  3. 迭代器
    STL迭代器用于访问容器中的数据对象。
    每个容器都有自己的迭代器,只有容器自己才知道如何访问自己的元素。
    迭代器像C/C++中的指针,算法通过迭代器来定位和操作容器中的元素。

    常用的迭代器示例:

总结

算法设计与分析是计算机学科的必修课程,学算法就像修炼内功,对于后期的各个方向的研究都有着其作用。最后为最后为大家献上我老师推荐的书籍、网课与工具。
书籍:

  • 编程珠玑
  • 编程之美

中国mooc网课:

  • 详细版:北京航空航天大学
  • 南方版:厦门大学
  • 升级版:北京大学屈婉玲教授版

可视化算法网站:

  • visualgo
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/296892.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号