当前位置: 首页 > news >正文

【算法】初识算法

尽量不说废话

算法

    • 一、数据结构
    • 二、排序算法
    • 三、检索算法
    • 四、字符算类型算法
    • 五、递归算法
    • 六、贪心算法
    • 七、动态规划
    • 八、归一化算法
    • 后记

我们这里指的算法,是作为程序员在计算机编程时运用到的算法。
算法是一个庞大的体系,主要包括以下内容:

一、数据结构

算法中不论采用什么经典算法,都避不开数据。
数据有多种类型,而如何表达数据以便满足不同需求是一个很必要的问题。比如如何对厂房中的货物进行统计、不同等级的产品进行管理等。
我们通常见到的比如堆栈、队列、树、图等都是流行且基本的数据结构。他们有各自的使用规则、比如队列:先进先出、堆栈:先进后出等等。

二、排序算法

有了数据,那么整理数据是必不可少的。排序是对同类型数据的排列,比如从大到小、在实际应用中会经常见到。
常见的冒泡排序,快速排序、插入排序、选择排序等。

三、检索算法

对于我们整理好的数据,我们如何进行后期使用,如何快速拿到我们想要的数据。
这时候检索算法就是我们所需要的了。
比如线性查找、非线性查找等。
往往在大型应用中需要考虑时间复杂度和空间复杂度。因为在检索过程中总有快慢之分,存储空间大小之别。在其中寻求最优解是我们需要考虑的问题。

四、字符算类型算法

字符是一类特殊的数据,对它相关的算法学习应该着重考虑。这个我们之后再说。

五、递归算法

递归是一个神奇的东西,我们在大学的c语言课中都有学过。
它能够将复杂的问题简化,使得每个子问题都类似于原始问题,但是规模更小。通过不断地缩小问题规模,最终达到可以直接解决的简单情况,然后通过组合这些简单情况的解决方案来构建原始问题的解答。

用于数据结构(如树的遍历)、排序算法(如快速排序和归并排序)、搜索算法(如深度优先搜索和广度优先搜索)等。递归算法的优点是代码通常比较简洁、易于理解,但缺点是可能会导致大量的函数调用,从而增加内存消耗和计算成本。在某些情况下,递归算法可以通过迭代(使用循环结构)的方式进行优化,以减少资源消耗。

六、贪心算法

是一种在每一步选择中都采取在当前状态下最好或最优(即最有利)的选择,从而希望导致结果是全局最好或最优的算法策略。这种算法在解决问题时通常不考虑所有可能的解决方案,而是通过每一步的局部最优选择来快速达到一个解决方案

贪心算法的特点在于它的简单性和高效性。在某些问题中,贪心算法可以迅速得到一个最优解,尤其是在那些具有最优子结构的问题中,即一个问题的最优解包含其子问题的最优解。然而,贪心算法并不总是能得到全局最优解,它适用于那些具有贪心选择性质的问题,即局部最优选择能够导向全局最优解的情况。

七、动态规划

与贪心算法同等级,以时间或地域划分阶段的过程的最优解。

八、归一化算法

用于大数据,是一个代表性算法,当然大数据还有其他算法值得去学习。

MapReduce 4:
MapReduce是一种编程模型,用于大规模数据集的并行处理。它由两个主要步骤组成:Map(映射)步骤处理数据,Reduce(归约)步骤汇总结果。

Hadoop 1:
Hadoop是一个开源框架,用于存储和处理大数据集群上的大量数据。它使用MapReduce进行数据处理,并提供了一个分布式文件系统(HDFS)。

Spark 2: Spark是一个快速的大数据处理框架,支持批处理、交互式查询、流处理和机器学习。

时间亚线性算法 1:
这类算法能够在处理时间远小于数据规模的情况下,对数据进行有效的分析和查询。 空间亚线性算法 1: 专注于在有限的内存空间内高效处理大量数据。

外存算法 1: 这些算法设计用于在外部存储(如硬盘)上处理数据,因为数据集太大而无法完全加载到内存中。

众包算法 1:
通过将任务分发给广泛的网络用户来解决问题,适用于处理需要人类直觉或判断的大数据问题。

后记

12点了,先到这吧,后面会写一些算法的实例出来,尽量通俗易懂,去繁留简。
(最后求个赞,感谢!)

相关文章:

【算法】初识算法

尽量不说废话 算法 一、数据结构二、排序算法三、检索算法四、字符算类型算法五、递归算法六、贪心算法七、动态规划八、归一化算法后记 我们这里指的算法,是作为程序员在计算机编程时运用到的算法。 算法是一个庞大的体系,主要包括以下内容:…...

HomeBrew 安装与应用

目录 前言一、安装 HomeBrew二、使用 HomeBrew1、使用 brew 查看已安装的软件包2、使用 brew 安装软件包3、使用 brew 升级已安装的软件包4、brew 还有哪些命令呢? 前言 在 macOS(或Linux)系统里,默认是没有软件包的管理器的&…...

JS详解-设计模式

工厂模式: 单例模式: // 1、定义一个类class SingleTon{// 2、添加私有静态属性static #instance// 3、添加静态方法static getInstance(){// 4、判断实例是否存在if(!this.#instance){// 5、实例不存在,创建实例this.#instance new Single…...

探寻马来西亚服务器托管的优势与魅力

随着全球跨境业务的不断增加,境外服务器成为越来越受欢迎的选择。在这其中,马来西亚服务器备受关注,其机房通常位于马来西亚首都吉隆坡。对于客户群体主要分布在东南亚、澳大利亚和新西兰等地区的用户来说,马来西亚服务器是一个理…...

虚幻UE5数字孪生蓝图开发教程

一、背景 这几年,智慧城市/智慧交通/智慧水利等飞速发展,骑士特意为大家做了一个这块的学习路线。 二、这是学习大纲 1.给虚幻UE5初学者准备的智慧城市/数字孪生蓝图开发教程 https://www.bilibili.com/video/BV1894y1u78G 2.UE5数字孪生蓝图开发教学…...

七、Mybatis-缓存

文章目录 缓存一级缓存二级缓存1.概念2.二级缓存开启的条件:3.使二级缓存失效的情况:4.在mapper配置文件中添加的cache标签可以设置一些属性:5.MyBatis缓存查询的顺序 缓存 一级缓存 级别为sqlSession,Mybatis默认开启一级缓存。 使一级缓存失效的四种…...

数据结构(六)——图的应用

6.4 图的应用 6.4.1 最小生成树 对于⼀个带权连通⽆向图G (V, E),⽣成树不同,每棵树的权(即树中所有边上的权值之和)也可能不同。设R为G的所有⽣成树的集合,若T为R中边的权值之和最小的生成树,则T称为G的…...

java自动化测试学习-03-06java基础之运算符

运算符 算术运算符 运算符含义举例加法,运算符两侧的值相加ab等于10-减法,运算符左侧减右侧的值a-b等于6*乘法,运算符左侧的值乘以右侧的值a*b等于16/除法,运算符左侧的值除以右侧的值a/b等于4%取余,运算符左侧的值除…...

【VASP学习】在Ubuntu系统安装vasp.5.4.4的全过程(包括VASP官方学习资料、安装过程中相关编辑器的配置、VASP的编译及VASP的测试)

在Ubuntu系统安装vasp.5.4.4的全过程 VASP的简介与相关学习资料安装前的准备工作及说明安装过程intel编译器的安装VASP的编译VASP的测试 参考来源 VASP的简介与相关学习资料 VASP(Vienna Ab initio Simulation Package)是基于第一性原理对原子尺度的材料进行模拟计算的软件。比…...

PyTorch|Dataset与DataLoader使用、构建自定义数据集

文章目录 一、Dataset与DataLoader二、自定义Dataset类(一)\_\_init\_\_函数(二)\_\_len\_\_函数(三)\_\_getitem\_\函数(四)全部代码 三、将单个样本组成minibatch(Data…...

4.6(信息差)

🌍 山西500千伏及以上输电线路工程首次采用无人机AI自主验收 🌋 中国与泰国将开展国际月球科研站等航天合作 ✨ 网页版微软 PowerPoint 新特性:可直接修剪视频 🍎 特斯拉开始在德国超级工厂生产出口到印度的右舵车 1.马斯克&…...

关于C#操作SQLite数据库的一些函数封装

主要功能:增删改查、自定义SQL执行、批量执行(事务)、防SQL注入、异常处理 1.NuGet中安装System.Data.SQLite 2.SQLiteHelper的封装: using System; using System.Collections.Generic; using System.Data.SQLite; using System.…...

LeetCode-79. 单词搜索【数组 字符串 回溯 矩阵】

LeetCode-79. 单词搜索【数组 字符串 回溯 矩阵】 题目描述:解题思路一:回溯 回溯三部曲。这里比较关键的是给board做标记,防止之后搜索时重复访问。解题思路二:回溯算法 dfs,直接看代码,很容易理解。visited哈希,防止…...

游戏引擎之高级动画技术

一、动画混合 当我们拥有各类动画素材(clips)时,要将它们融合起来成为一套完整的动画。 最经典的例子就是从走的动画自然的过渡到跑的动画。 1.1 线性插值 不同于上节课的LERP(同一个clip内不同pose之间)&#xff…...

Oracle 数据库中的全文搜索

Oracle 数据库中的全文搜索 0. 引言1. 整体流程2. 创建索引2-1. 创建一个简单的表2-2. 创建文本索引2-3. 查看创建的基础表 3. 运行查询3-1. 运行文本查询3-2. CONTAINS 运算符3-3. 混合查询3-4. OR 查询3-5. 通配符3-6. 短语搜索3-7. 模糊搜索(Fuzzy searches&…...

代码随想录阅读笔记-二叉树【二叉搜索树中的众数】

题目 给定一个有相同值的二叉搜索树(BST),找出 BST 中的所有众数(出现频率最高的元素)。 假定 BST 有如下定义: 结点左子树中所含结点的值小于等于当前结点的值结点右子树中所含结点的值大于等于当前结点的…...

AcWing-游戏

1388. 游戏 - AcWing题库 所需知识:博弈论,区间dp 由于双方都采取最优的策略来取数字,所以结果为确定的,有可能会有多个不同的过程,但是我们只需要关注最终结果就行了。 方法一: 定义dp[i][j] 表示区间…...

Mybatis——一对一映射

一对一映射 预置条件 在某网络购物系统中,一个用户只能拥有一个购物车,用户与购物车的关系可以设计为一对一关系 数据库表结构(唯一外键关联) 创建两个实体类和映射接口 package org.example.demo;import lombok.Data;import …...

Web 安全之 SSL 剥离攻击详解

目录 SSL/TLS简介 SSL 剥离攻击原理 SSL 剥离攻击的影响 SSL 剥离攻击的防范措施 小结 SSL 剥离攻击(SSL Stripping Attack)是一种针对安全套接层(SSL)或传输层安全性(TLS)协议的攻击手段,…...

数据结构——顺序表(C语言)

目录 一、顺序表概念 二、顺序表分类 1.静态顺序表 2.动态顺序表 三、顺序表的实现 1.顺序表的结构体定义 2. 顺序表初始化 3.顺序表销毁 4.顺序表的检验 5.顺序表打印 6.顺序表扩容 7.顺序表尾插与头插 8.尾删与头删 9.在pos处插入数据 10.在pos处删除数据 11.查找数据 …...

nli-distilroberta-baseAI应用:心理健康聊天机器人对话逻辑连贯性监测

NLI DistilRoBERTa Base AI应用:心理健康聊天机器人对话逻辑连贯性监测 1. 项目概述 心理健康聊天机器人正成为越来越多人寻求心理支持的重要工具。然而,这类对话系统面临一个关键挑战:如何确保对话内容的逻辑连贯性?这正是nli-…...

ChatTTS在政务热线场景落地:拟真语音提升市民服务体验真实案例

ChatTTS在政务热线场景落地:拟真语音提升市民服务体验真实案例 1. 项目背景与价值 政务热线是政府与市民沟通的重要桥梁,但传统语音系统存在明显痛点:机械化的语音播报缺乏人情味,长时间等待的提示音让市民感到烦躁,…...

红外遥控技术原理与实现方案详解

红外遥控技术原理与实现方案1. 红外遥控技术概述红外遥控技术是一种利用红外光波进行短距离无线通信的技术方案,主要应用于家电控制领域。该技术通过调制红外光波来传输控制信号,具有成本低、实现简单、抗干扰能力强等特点。1.1 技术特点与应用场景红外遥…...

pyNastran:打破工程仿真壁垒的开源Python解决方案

pyNastran:打破工程仿真壁垒的开源Python解决方案 【免费下载链接】pyNastran A Python-based interface tool for Nastrans file formats 项目地址: https://gitcode.com/gh_mirrors/py/pyNastran 在航空航天、汽车制造等高端制造领域,有限元分析…...

League Toolkit:重新定义英雄联盟游戏体验的智能辅助工具

League Toolkit:重新定义英雄联盟游戏体验的智能辅助工具 【免费下载链接】League-Toolkit 兴趣使然的、简单易用的英雄联盟工具集。支持战绩查询、自动秒选等功能。基于 LCU API。 项目地址: https://gitcode.com/gh_mirrors/le/League-Toolkit 价值定位&am…...

HCIA复习作业

一、 实验拓扑二、 实验需求1.学校内HTTP客户端可以正常通过域名www.baidu.com访问百度的服务器 2.学校网络内部基于192.168.1.0/24划分,PC1可以访问3.3.3.0/24网段,PC2不允许 3.学校内部使用静态路由,R1和R2之间浮动静态路由 4.运营商使用动…...

so-vits-svc声压级标准化终极指南:避免音质损伤的10个关键步骤

so-vits-svc声压级标准化终极指南:避免音质损伤的10个关键步骤 【免费下载链接】so-vits-svc SoftVC VITS Singing Voice Conversion 项目地址: https://gitcode.com/gh_mirrors/so/so-vits-svc 你是否在使用so-vits-svc进行语音转换时,遇到过输出…...

# Trae IDE `settings.json` 配置详解与教学文档

Trae IDE settings.json 配置详解与教学文档 一、文档说明 本文档针对 Trae IDE 中 Java 开发核心配置文件 settings.json 进行逐字段解读,结合实际开发场景说明配置目的、作用及最佳实践,适配 Spring Boot + Maven + JDK21 技术栈。 二、配置文件整体作用 settings.json…...

CAD工程师必看:如何用De Boor算法优化B样条曲线设计(附NURBS对比)

CAD工程师必看:如何用De Boor算法优化B样条曲线设计(附NURBS对比) 在工业设计领域,曲线建模的精度与效率直接决定了产品从概念到成品的转化质量。作为CAD工程师,我们常常需要在设计自由度和计算效率之间寻找平衡点——…...

Python服务内存持续增长?5个被忽略的__del__陷阱+3种RAII式资源封装模板,今天必须修复!

第一章:Python服务内存持续增长的智能体诊断全景图Python服务在长期运行中出现内存持续增长,是生产环境中高频且隐蔽的稳定性风险。传统人工排查依赖经验与断点调试,难以覆盖异步任务、闭包引用、第三方库缓存等复杂场景。本章构建一个面向可…...