算法系统学习-轻轻‘撬’开算法的入门

简介: 该系列是基于有一定语言基础(C,C++,Java等等)和基本的数据结构基础进行的算法学习专栏,如果觉得有点吃力 😥 ,建议先了解前提知识再学习喔!本个专栏会将用更容易理解的表达去学习算法,如果在一些表述上存在问题还请各位多多指点

算法基础概念


对解决问题的求解步骤的描述,在计算机中表现为指令的有限序列,并且每天指令表示一个或多个操作。其实算法并不是个陌生词汇,例如小学的加减乘除中“先算乘除,后算加减”就是四则运算的算法。到后面文章要讲的指数运算,矩阵运算以及其他的代数运算都是一种算法。

简单来说:算法就是你解决问题的技巧和方式。


算法=控制结构+原操作(对固有数据类型操作)


算法三要素:

操作:

  1. 算术运算:加,减,乘,除
  2. 关系比较:大于,等于,小于,不等于
  3. 逻辑运算:与,或,非
  4. 数据传送:输入,输出,赋值

控制结构:

  1. 顺序结构
  2. 选择结构
  3. 循环结构

数据结构:

算法操作的对象是数据,数据间的逻辑关系,数据的存储方式以及处理方式就是数据的数据结构。它和算法设计息息相关。


算法基本性质:

  1. 目的性:算法有明确的目的,能完成赋予它的功能
  2. 分布性:完成其复杂的功能,由一系列计算机可执行的执行顺序
  3. 有序性:步骤是有序的,不可以随便改变算法步骤的执行顺序
  4. 有限性:是有限的指令序列,所包含的步骤是有限的
  5. 操作性:有意义的算法总是对某些对对象进行操作,使其改变状态,完成其功能


算法设计及基本方法


设计时考虑的质量指标:

  1. 正确性:首先对于一切合法的输入数据都能得到满足要求的结果。
  2. 可读性:本质上为了与人的阅读与交流,其次才是让计算机执行,算法应该易于人理解;另一方面,晦涩难读的程序比较容易隐藏多的错误而难以调试。如果一个算法只有设计者才能够理解,那么注定是个失败的算法。
  3. 稳健性:当输入一些非法的数据时,算法应该能够恰当给出反应和进行处理,而不是产生莫名其妙的的输出结果。
  4. 高效率和低存储需求:效率指的是算法执行时间,存储量指的是算法执行过程中所需的最大存储空间,(也就是后面所说的时间复杂度,空间复杂度)


基本方法:

  1. 结构化方法:结构化方法总的指导思想是自顶向下逐步求精,它的基本原则是功能的分解和模块化

拓展:

1. 自顶向下:

将现实世界的问题经过抽象转化为逻辑空间或求解空间的问题,将复杂的大问题划分成小问题,找出问题的关键和重点,然后抽象的,概括地描述问题。

2. 逐步求精:

将复杂的问题抽象化处理变味相对比较简单的问题,经过若干步精化处理,最后细化到用“3种基本结构”以及基本操作去描述

3. 模块化:把一个大程序按照一定的原则划分成若干个相对独立但相关的小模块的方法(就像一辆车,音响系统,动力系统,他们是单独的模块,但是他们又是相关的)

2.面向对象方法:

所谓的对象是包含数据和对数据操作代码的实体,或者是说在传统的数据结构中加入一些被称为成员函数的过程,因而赋予对象以动作。(因为这个方法是比较主流的编程思想具体不过多阐述)


表示算法的方式(了解):

  1. 自然语言
  2. 流程图

网络异常,图片无法展示
|

  1. 盒图(NS流程)

网络异常,图片无法展示
|

  1. PAD图(问题分析图)
  2. 伪代码:是用介于自然语言和计算机语言之间的文字和符号来描述算法的一种工具,它不用图形符号,因此书写方便格式紧凑,易于理解,便于计算机程序设计语言实现。(重点内容)简单理解就是不能直接运行的代码,但是可以看的懂

计算机求解问题的步骤:

  1. 分析问题
  2. 建立数学模型(重点)
  3. 算法设计与选择
  4. 算法表示
  5. 算法分析
  6. 算法实现
  7. 程序测试和调试
  8. 结果整理和文档编制
目录
相关文章
|
1月前
|
机器学习/深度学习 人工智能 监控
AI算法分析,智慧城管AI智能识别系统源码
AI视频分析技术应用于智慧城管系统,通过监控摄像头实时识别违法行为,如违规摆摊、垃圾、违章停车等,实现非现场执法和预警。算法平台检测街面秩序(出店、游商、机动车、占道)和市容环境(垃圾、晾晒、垃圾桶、路面不洁、漂浮物、乱堆物料),助力及时处理问题,提升城市管理效率。
AI算法分析,智慧城管AI智能识别系统源码
|
1天前
|
算法 索引
数据结构与算法-最小生成树入门
数据结构与算法-最小生成树入门
6 0
|
1天前
|
算法
数据结构与算法-AVL树入门
数据结构与算法-AVL树入门
5 0
|
1天前
|
算法 索引
数据结构与算法-三种队列基础入门
数据结构与算法-三种队列基础入门
5 0
|
10天前
|
机器学习/深度学习 算法 前端开发
Scikit-learn进阶:探索集成学习算法
【4月更文挑战第17天】本文介绍了Scikit-learn中的集成学习算法,包括Bagging(如RandomForest)、Boosting(AdaBoost、GradientBoosting)和Stacking。通过结合多个学习器,集成学习能提高模型性能,减少偏差和方差。文中展示了如何使用Scikit-learn实现这些算法,并提供示例代码,帮助读者理解和应用集成学习提升模型预测准确性。
|
10天前
|
机器学习/深度学习 算法 Python
使用Python实现集成学习算法:Bagging与Boosting
使用Python实现集成学习算法:Bagging与Boosting
20 0
|
17天前
|
算法
【算法学习--字符串】(不含KMP算法)
【算法学习--字符串】(不含KMP算法)
|
28天前
|
存储 算法 JavaScript
Java入门高频考查算法逻辑基础知识3-编程篇(超详细18题1.8万字参考编程实现)
解决这类问题时,建议采取下面的步骤: 理解数学原理:确保你懂得基本的数学公式和法则,这对于制定解决方案至关重要。 优化算法:了解时间复杂度和空间复杂度,并寻找优化的机会。特别注意避免不必要的重复计算。 代码实践:多编写实践代码,并确保你的代码是高效、清晰且稳健的。 错误检查和测试:要为你的代码编写测试案例,测试标准的、边缘情况以及异常输入。 进行复杂问题简化:面对复杂的问题时,先尝试简化问题,然后逐步分析和解决。 沟通和解释:在编写代码的时候清晰地沟通你的思路,不仅要写出正确的代码,还要能向面试官解释你的
33 0
|
1月前
|
机器学习/深度学习 算法
m基于深度学习的64QAM调制解调系统相位检测和补偿算法matlab仿真
MATLAB 2022a仿真实现了基于深度学习的64QAM相位检测和补偿算法,有效应对通信中相位失真问题。通过DNN进行相位检测和补偿,降低解调错误。核心程序生成随机信号,模拟AWGN信道,比较了有无相位补偿的误码率,结果显示补偿能显著提升性能。
27 8
|
1月前
|
存储 算法 JavaScript
【C++ 泛型编程 入门篇】 C++ 中的泛型算法 STL(sort,find)(二)
【C++ 泛型编程 入门篇】 C++ 中的泛型算法 STL(sort,find)
28 0