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

简介: 该系列是基于有一定语言基础(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. 结果整理和文档编制
目录
相关文章
|
算法 搜索推荐 JavaScript
基于python智能推荐算法的全屋定制系统
本研究聚焦基于智能推荐算法的全屋定制平台网站设计,旨在解决消费者在个性化定制中面临的选择难题。通过整合Django、Vue、Python与MySQL等技术,构建集家装设计、材料推荐、家具搭配于一体的一站式智能服务平台,提升用户体验与行业数字化水平。
|
存储 算法
算法入门:专题二---滑动窗口(长度最小的子数组)类型题目攻克!
给定一个正整数数组和目标值target,找出总和大于等于target的最短连续子数组长度。利用滑动窗口(双指针)优化,维护窗口内元素和,通过单调性避免重复枚举,时间复杂度O(n)。当窗口和满足条件时收缩左边界,更新最小长度,最终返回结果。
基于MPPT算法的光伏并网发电系统simulink建模与仿真
本课题基于MATLAB/Simulink搭建光伏并网发电系统模型,集成PV模块、MPPT算法、PWM控制与并网电路,实现最大功率跟踪与电能高效并网。通过仿真验证系统在不同环境下的动态响应与稳定性,采用SVPWM与电流闭环控制,确保输出电流与电网同频同相,满足并网电能质量要求。
|
数据采集 边缘计算 算法
遗传算法+多目标规划算法+自适应神经模糊系统(Matlab代码实现)
遗传算法+多目标规划算法+自适应神经模糊系统(Matlab代码实现)
315 4
|
机器学习/深度学习 算法 数据挖掘
没发论文的注意啦!重磅更新!GWO-BP-AdaBoost预测!灰狼优化、人工神经网络与AdaBoost集成学习算法预测研究(Matlab代码实现)
没发论文的注意啦!重磅更新!GWO-BP-AdaBoost预测!灰狼优化、人工神经网络与AdaBoost集成学习算法预测研究(Matlab代码实现)
430 0
|
存储 算法
算法入门:专题一:双指针(有效三角形的个数)
给定一个数组,找出能组成三角形的三元组个数。利用“两边之和大于第三边”的性质,先排序,再用双指针优化。固定最大边,左右指针从区间两端向内移动,若两短边之和大于最长边,则中间所有组合均有效,时间复杂度由暴力的O(n³)降至O(n²)。
|
存储 算法 编译器
算法入门:剑指offer改编题目:查找总价格为目标值的两个商品
给定递增数组和目标值target,找出两数之和等于target的两个数字。利用双指针法,left从头、right从尾向中间逼近,根据和与target的大小关系调整指针,时间复杂度O(n),空间复杂度O(1)。找不到时返回{-1,-1}。
|
机器学习/深度学习 传感器 算法
【无人车路径跟踪】基于神经网络的数据驱动迭代学习控制(ILC)算法,用于具有未知模型和重复任务的非线性单输入单输出(SISO)离散时间系统的无人车的路径跟踪(Matlab代码实现)
【无人车路径跟踪】基于神经网络的数据驱动迭代学习控制(ILC)算法,用于具有未知模型和重复任务的非线性单输入单输出(SISO)离散时间系统的无人车的路径跟踪(Matlab代码实现)
825 2
|
机器学习/深度学习 运维 算法
【微电网多目标优化调度】多目标学习者行为优化算法MOLPB求解微电网多目标优化调度研究(Matlab代码实现)
【微电网多目标优化调度】多目标学习者行为优化算法MOLPB求解微电网多目标优化调度研究(Matlab代码实现)
467 1
|
机器学习/深度学习 算法 算法框架/工具
256KB内存约束下的设备端训练:算法与系统协同设计——论文解读
MIT与MIT-IBM Watson AI Lab团队提出一种创新方法,在仅256KB SRAM和1MB Flash的微控制器上实现深度神经网络训练。该研究通过量化感知缩放(QAS)、稀疏层/张量更新及算子重排序等技术,将内存占用降至141KB,较传统框架减少2300倍,首次突破设备端训练的内存瓶颈,推动边缘智能发展。
788 6

热门文章

最新文章