算法图解 总结

算法图解笔记(附PDF下载地址) 算法图解笔记分治策略散列函数广度优先搜索 分治策略 分治策略(分而治之)是一种解决问题的思路,使用递归实现 工作原理: 找出简单基线条件(递归中的概念,基线条件指函数不再调用自己;递归条件指函数调用自己) 缩小问题规模使接近基线条件(编写涉及数组的递归函数时,基线条件通常是数组为空或只包含一个元素。陷入困境时,请检查基线条件是不是这样的。) 代表算法:二分查找,快排 散列函数 散列表适用场景 ... 阅读详情

##定义:算法指的是解题方案的准确而完整的描述,是一系列解决问题的清晰指令,算法代表着用系统的方法描述解决问题的策略机制。也就是说,能够对一定规范的输入,在有限时间内获得所要求的输出。如果一个算法有缺陷,或不适合于某个问题,执行这个算法将不会解决这个问题。不同的算法可能用不同的时间、空间或效率来完成同样的任务。一个算法的优劣可以用空间复杂度与时间复杂度来衡量。

1、二分查找

      二分查找是一种算法,其输入是一个有序的元素列表,如果要查找的元素在其中 二分查找就返回其原位置;否则返回null。通俗的讲就是折半查找,线性表采用顺序存储的结构,表中元素按关键字有序排列,将表中间的关键字与查找关键字比较,如果相等就查找成功,如果不相等就以中间位置为界限将表分成前后两个子表,如果中间位置的关键字大于查找的数则查前一表单,如小于则查后一表单,不断缩小查找范围。

        对于包含n个元素的列表,用二分查找最多需要log2n(以2为底n的对数)而简单查找最多需要n步。


2、大O表示法

     计算机科学中,大O表示法被用来描述一个算法的性能或复杂度。大O表示法可以用来描述一个算法的最差情况,或者一个算法执行的耗时或占用空间(例如内存或磁盘占用)。即大O表示法指的并不是以秒为单位的速度,是比较操作数,指出了算法运行时间的增速。

    O(操作数)   O(log n)   <log n就表示log2n>

常见大O运行时间:

· O(log n ),也叫对数时间,这样的算法包括二分查找。

· O (n),也叫线性时间,这样的算法包括简单查找。

· O (n* log n ),这样的算法包括快速排序——一种速度较快的排序算法。

· O (n2 ),这样的算法包括选择排序——一种速度较慢的排序算法。

· O (n!),这样的算法是一种非常慢的算法。包括旅行商问题的解决方案。

算法的速度指的并不是时间 而是操作数的增速。


3、排序

      数组,链表

      数组的话意味着所有的元素在内存中都是连在一起的。一般为了添加新元素会有 预留座位 但是会有可能额外请求的内存用不上 浪费了内存,或者预留不够 这两个缺点

      链表的每个元素都储存了下一个元素的地址,内存是随机的,因此添加元素只需要将其放入内存中,将其地址储存到前一个元素中。

      链表的优势在于添加元素方面,数组在于地址方面。

      当需要读取链表的最后一个元素时,不能够直接读取,因为不知道它的地址只能挨个访问元素,直至访问到最后一个元素。需要读取所有元素时 链表的效率很高,但如果需要跳跃,链表的效率很低。而 数组则可以知道每个元素的地址,随机读取数据时数组的效率很高

数组的元素带编号,从0开始而不是1.元素的位置称为索引,如说 元素20的位于索引1处

                读取时间      插入时间

数组        O(1)                       O(n)

链表        O(n)                       O(1)

在中间插入

      使用链表时 插入元素只需要修改它前面的那个元素指向的地址,而使用数组则需要将后面的元素都后移,空间不够还得将整个数组复制到别的地方。 删除元素同理,链表也是更好的选择。

                             读取              插入              删除

            数组         O(1)               O(n)               O(n)

            链表         O(n)               O(1)               O(1)

需要指出的是,仅当能够立即访问要删除的元素时,删除操作的运行时间才为O(1)。通常我们都记录了链表的第一个元素和最后一个元素 因此删除这些元素时运行时间为O (1)。

访问方式:分 随机访问 和 顺序访问

      链表只能顺序访问 数组支持随机访问

实例:实际上,Facebook存储用户信息时使用的既不是数组也不是链表。假设Facebook使用的是一种混合数据:链表数组。这个数组包含26个元素,每个元素都指向一个链表。例如,该数组的第一个元素指向的链表包含所有以A打头的用户名,第二个元素指向的链表包含所有以B打头的用户名,以此类推。


4、选择排序

找出最多的然后添加到一个新列表中

需要总时间为 O(n*n),即O(n²)    {并非每次都需要检查n 个元素。第一次需要检查n 个元素,但随后检查的元素数依次为n- 1, n-2, …, 2和1。平均每次检查的元素数为1/2×n,因此运行时间为O (n× 1/2 × n)。但大O表示法省略诸如1/2这样的常数(有关这方面的完整讨论,请参阅第4章),因此简单地写作O (n× n)或O (n²)。}

 

5、递归

      伪代码是对手头问题的简要描述,看着像代码,但其实更接近自然语言。

编写递归函数时,必须告诉它何时停止递归。正因为如此,每个递归函数都有两部分:基线条件(base case)和递归条件(recursive case)。递归条件指的是函数调用自己,而基线条件则指的是函数不再调用自己,从而避免形成无限循环。

    递归指的是调用自己的函数。每个递归函数都有两个条件:基线条件和递归条件。栈有两种操作:压入和弹出。所有函数调用都进入调用栈。调用栈可能很长,这将占用大量的内存。

 

6、快速排序

      分而治之-递归式问题解决方法

 

D&C将问题逐步分解。使用D&C处理列表时,基线条件很可能是空数组或只包含一个元素的数组。

实现快速排序时,请随机地选择用作基准值的元素。快速排序的平均运行时间为O (nlog n)。

大O表示法中的常量有时候事关重大,这就是快速排序比合并排序快的原因所在。

比较简单查找和二分查找时,常量几乎无关紧要,因为列表很长时,O(log n)的速度比O (n)快得多。

 

7、散列表

      散列函数“将输入映射到数字”

      散列函数要求:1.必须是一致的。每次输入同样的数字输出结果都必须一致。

                              2.它应该将不同的输出映射到不同的数字中。输入不同最好输出都不同

 

缓存的工作原理:网站将数据记住,而不再重新计算。如果你登录了Facebook,你看到的所有内容都是为你定制的。你每次访问facebook.com,其服务器都需考虑你感兴趣的是什么内容。但如果你没有登录,看到的将是登录页面。每个人看到的登录页面都相同。Facebook被反复要求做同样的事情:“当我注销时,请向我显示主页。”有鉴于此,它不让服务器去生成主页,而是将主页存储起来,并在需要时将其直接发送给用户。

 

散列表适合用于:

模拟映射关系;

防止重复;

      缓存/记住数据,以免服务器再通过处理来生成它们。

 

冲突:给两个键分配的位置相同。

如果两个键映射到了同一个位置,就在这个位置存储一个链表。

如果两个键映射到了同一个位置,就在这个位置存储一个链表。

 

在平均情况下,散列表的查找(获取给定索引处的值)速度与数组一样快,而插入和删除速度与链表一样快,因此它兼具两者的优点!但在最糟情况下,散列表的各种操作的速度都很慢。因此,在使用散列表时,避开最糟情况至关重要。为此,需要避免冲突。而要避免冲突,需要有:较低的填装因子;良好的散列函数

 

8、广度优先搜索

广度优先搜索能够找出两样东西之间的最短距离

图由节点和边组成,一个节点可能与众多节点直接相连,这些节点被称为邻居

广度优先搜索是一种用于图的查找算法。解决两种问题:1.从节点A出发有前往B节点的路径嘛?    2.从节点A出发前往节点B的哪条路径最短

按添加顺序进行检查——队列,与栈类似,不能随机的访问队列中的元素。队列只支持两种操作:入队 出队

队列是一种先进后出的数据结构,栈是一种后进先出的数据结构。

散列表能够将键映射到值,添加键-值对的顺序不重要,因为散列表是无序的

有向图:其中的关系是单向的;

无向图:没有箭头,直接相连的节点互为邻居。

      下面两个图是等价的:


压入大致相当于 入队,弹出大致相当于 出队

 

广度优先搜索的运行时间为O(人数+边数),通常写作O(V+E),其中V为顶点数,E为边数

 

拓扑排序,可以用来创建一个有序列表

 

树:树是一种特殊的图,其中没有往后指的边

在数据结构中树的特点是一对多,链表是一对一,图是多对多。

无向图中的边不带箭头,其中的关系是双向的


9、狄克斯特拉算法

广度优先搜索 将得到最少的路径,

狄克斯特拉 将得到最短时间的路径 。这个算法给每段都分配了一个数字或者权重找出的是总权重最小的路径。

狄克斯特拉算法对于每条边都有关联数字的图——权重。带权重的图叫 加权图,不带则叫 非加权图。

 

环:意味着绕圈圈,环增加权重。绕环的路径不可能是最短的路径。无向图意味着两个节点彼此指向对方其实就是环,在无向图中 每条边都是一个环。狄克斯特拉算法只适用于有向无环图。

如果有负权边则不能使用狄克斯特拉算法,在包含负权边的图里面,可使用 贝尔曼-福德算法。

 

10、贪婪算法

简单易行。每步都采取最优的做法,每步选择局部最优解,得到的就是全局最优解。显然,贪婪算法不是在任何情况下都行之有效。

贪婪算法 不仅简单而且通常运行速度很快

 

11、并集意味着集合合并

交集意味着找出两个集合中都有的元素

差集意味着将从一个集合中剔除出现在另一个集合中的元素

 

NP完全问题 解决集合覆盖问题——最佳做法:近似算法
---------------------  

原文:https://blog.youkuaiyun.com/tututuo/article/details/80276599?utm_source=copy  
 

遗传算法图解_遗传算法图解指南 遗传算法图解In the previous post, We discussed what Artificial Intelligence (AI) in general. It would be less informative if we only know the information from the outside. So in this post, I will go into a ... 阅读详情

相关推荐

算法动画图解

算法动画图解 享受观看,尝试和学习的算法动画图解。算法的广泛领域用动画清晰简洁地解释。可以各种尝试的“测试模式”来加深您的理解。还充满了您熟悉地加密和安全等算法。来吧,让我们进入算法的世界! ==== 类别和包含的主题 ==== [ 分类 ]冒泡排序、选择性排序、插入排序、堆排序、归并排序、快速排序 [ 聚类 ] K-均值算法 [ 列表搜索 ] ...

qq_33351341的博客 4173

《算法图解》高清PDF版

《算法图解》高清PDF版,像小说一样好看容易理解的算法书籍,适合算法和竞赛入门者学习,书中的示例代码是python。

学而不思则罔,思而不学则殆 3万+

《算法图解》观后感

算法,我该拿你怎么办? 写这篇博客倒不是为了蹭现在算法的热度,而主要是为了下面两个目的: 推荐一本算法幼儿园级别的入门书籍《算法图解》 思考算法跟业务开发程序员的关系 如果是像我一样干业务型的程序员,对算法估计都没有什么很深的感觉,因为一般的难点都在于如何快速响应产品那边来的各种需求,还有修复自己亲手写的Bug,算法,好像在我们的生活中真的不常见,但是一旦去刷招聘信息,就会发现别家公司面试时都会考算法,甚至自己公司都会考,但是,既然在工作中不常见,那么为什么要对算法有这么深的执念呢?展现一个技术人员对于

TROUBLE I AM IN 741

算法图解——の——二分查找【附带pdf下载链接】

1、二分查找要求输入集合有序,所以好多算法会涉及到排序 2、二分查找效率高,用二分查找最多需要log 2 n步,而简单查找最多需要n步 举例说下,例如1.2.3......1024,二分查找最多需要log2 1024即10次,而普通查找最多需要1024次,发现有100倍的差距,数量越大,越明显 下面列出二分查找的java代码供参考,两个 不同的区别是,如果输入集合只有一个时,的代码拆分与整合。 /** * Created by burns. * * @author <a href=

爱的叹息的专栏 4676

图解算法小册:开启算法世界的大门

在信息技术迅猛发展的今天,算法已经成为计算机科学中不可或缺的一环。它不仅是解决编程问题的核心工具,更是提升软件性能、优化系统架构的关键。随着大数据、人工智能等技术领域的兴起,对算法的掌握和应用能力提出了更高的要求。图解算法小册正是在这样的背景下应运而生,旨在帮助学习者通过直观的图形化方式,深入理解算法的原理和应用。

weixin_44063529的博客 1501

算法图解读书笔记.pdf

适合想了解基础算法的前端开发人员

50.【算法图解】

常用算法和时间复杂度

qq_69683957的博客 1951

图解算法 很好的高清电子版pdf

图解算法 很好的高清电子版pdf

《算法图解》第二版 学习笔记

算法

穿梭的编织者 2581

算法图解.pdf,就是个简单的一个pdf

算法图解.pdf,就是个简单的一个pdf,这里有字数要求啊,哎呀哎呀,算法图解算法图解算法图解算法图解算法图解算法图解算法图解算法图解算法图解算法图解算法图解算法图解算法图解算法图解算法图解算法图解算法图解算法图解算法图解算法图解算法图解算法图解算法图解算法图解算法图解算法图解算法图解算法图解算法图解算法图解算法图解算法图解算法图解算法图解算法图解算法图解算法图解算法图解算法图解算法图解算法图解算法图解算法图解算法图解算法图解算法图解算法图解算法图解算法图解算法图解算法图解算法图解算法图解算法图解算法图解算法图解算法图解算法图解算法图解算法图解算法图解算法图解算法图解算法图解算法图解算法图解算法图解算法图解算法图解算法图解算法图解算法图解算法图解算法图解算法图解算法图解算法图解算法图解算法图解算法图解算法图解算法图解算法图解算法图解算法图解算法图解算法图解算法图解算法图解算法图解算法图解算法图解算法图解算法图解算法图解算法图解算法图解算法图解算法图解算法图解算法图解算法图解算法图解算法图解算法图解算法图解算法图解算法图解算法图解算法图解算法图解算法图解算法图解算法图解算法图解算法图解算

算法.pdf_电子版_pdf版

算法.pdf_电子版_pdf版

【hacker送书第17期】算法图解(第2版)

在当今的数字化时代,算法已经渗透到我们生活的方方面面。无论是搜索引擎的排序、社交媒体的推荐系统,还是无人驾驶汽车的决策逻辑,背后都离不开算法的支撑。因此,掌握算法知识对于现代人来说显得尤为重要。《算法图解》第2版。这本书以图解的方式,帮助读者轻松理解并掌握算法的核心知识,为你的编程之路提供强大的助力。💕本书示例丰富,图文并茂,以简明易懂的方式阐释了算法,旨在帮助程序员在日常项目中更好地利用算法为软件开发助力。前三章介绍算法基础,包括二分查找、大O表示法、两种基本的数据结构以及递归等。

hacker707的博客 3万+

算法(第四版).pdf_algorithm_

全面论述排序、搜索、图处理和字符串处理的算法和数据结构,涵盖每位程序员应知应会的50种算法。

图解 Python 算法

普通程序员,不学算法,也可以成为大神吗?对不起,这个,绝对不可以。可是算法好难啊~~看两页书就想睡觉……所以就不学了吗?就一直当普通程序员吗?如果有一本算法书,看着很轻松...

优快云资讯 2910

Android音频学习(十四)——加载音频设备

loadHwModule 是 Android 音频系统的核心初始化函数,负责加载音频硬件抽象层(HAL)的模块实现。它建立 AudioPolicyService 与底层硬件的桥梁,将配置文件(audio_policy_config.xml)中的标签<module>定义转化为可操作的硬件对象,加载的是音频硬件模块(HAL实现),每个模块对应一种音频设备类型,以动态库的形式存在,负责与底层音频硬件交互。

miemie2014的博客 1734

三相直流无刷电机(带HALL传感器)BLDC控制一

本案例选择TIM0的CH0/CH1/CH2三个通道接入三路原始hall输出信号。三路TIM_CHx(48)通过配置存入到NIP寄存器(new input pattern,3 bits)内。未完待续。

m0_69929716的博客 408

算法图解

注:此文主要用于《算法图解》一书各章节知识点概述。 第一章: 二分查找算法O(logn) 算法程序: 简单查找算法O(n) 大O运行时间: O(logn) < O(n) < O(nlogn) < O(n²) < O(n!) 先排序,再查找 第二章: 数组:适用于读取很多 读取O(1) 插入O(n) 删除O(n) 链表:适用于插入很多 读取O(n) 插入O(1)...

Steve_Kung的博客 1187

保姆级教程:在树莓派5B上用AI Kit跑YOLOv8,实测134fps的完整配置流程

本文提供了一份详细的树莓派5B搭配AI Kit部署YOLOv8的教程,从硬件组装到模型转换、优化和部署,最终实现134FPS的高帧率推理性能。通过Hailo-8L AI加速模块和HEF模型转换,这套方案为边缘AI计算提供了强大支持,适用于智能监控、无人机视觉导航等应用场景。

weixin_28725407的博客 450

《算法图解》读后感

文章目录前言读后感 前言 绝大部分的算法书都是密密麻麻的文字,对于刚学习算法的同学来说完全看不下去 这本书也算是一股清流了 买的时候看了看目录和图觉得不错就入手了 全书总共 180 页左右,书页偏方正 读后感 非常非常非常基础的一本算法书,其实严格上来说根本算不上是一本算法书 书名《算法图解》我觉得重点在于图解而不是算法,书中的几乎看不到代码或者说代码量极少 主要为了提高学习兴趣以及帮助理解一些最基础的算法比如二分查找等等 ...

lmmmmmm 的代码生活 704

【计算机科学导论实验】加法图灵机模拟 题解

本文提供计算机科学导论课程“图灵机加法器”实验的个人思路,仅供参考。

Chavapa's blog 2579

Python爬虫实战:新浪财经股票金融数据全方位抓取教程

本教程系统介绍了新浪财经股票数据爬取技术,从静态网页解析、实时接口请求到异步爬取和数据存储,帮助你搭建了一个完整的金融数据采集流程。未来,可以结合深度学习模型进行行情预测,或者将数据接入量化交易系统,实现自动化投资。

2201_76125261的博客 2210

像小说一样有趣的算法入门书——算法图解

是一本面向程序员的算法入门书籍,它以图解和实例的方式,深入浅出地解释了各种算法的原理和应用。

python12345_的博客 746

【OpenClaw从入门到精通】零基础入门——OpenClaw核心概念快速理解(2026入门版)

OpenClaw是一个强大的AI代理框架,旨在构建智能化的自动化任务处理系统。随着人工智能技术的快速发展,OpenClaw为开发者和企业提供了一个完整的解决方案,用于创建能够理解、学习和执行复杂任务的智能体。本文将带领零基础的读者快速理解OpenClaw的核心概念,从基础架构到实际应用,为后续深入学习奠定坚实基础。通过本文的学习,你将掌握OpenClaw的基本原理、核心组件和快速上手方法。

一键难忘的博客 329

算法图解--python

最近拿算法图解重新温习了一下算法,这本书真的非常适合入门,把比较简单算法细节和思路讲的非常清楚。 果然入门计算机语言就该学python。 大学里面一上来就C++太苦逼了。 然后是第一次强烈的感受到Python解题的魅力。之前学python的时候,觉得不用定义就直接使用很变扭,还有就是可以灵活的使用各种数据结构,也是有点不适应。因为一开始学的就是C++,之前算法和数据结构都是用C...

zqzwzd的博客 1万+

QNX系统中的密码哈希格式——数据安全深度分析

综上所述,QNX系统中的Shadowed密码哈希格式提供了一种有效的数据安全机制,能够保护用户密码的安全性。通过将用户密码的哈希值存储在系统文件中,并结合哈希算法和盐值的使用,可以有效地防止明文密码泄露和密码破解。密码哈希是一种常用的安全技术,用于将用户密码转换为不可逆的哈希值,以保护用户的敏感信息。在QNX操作系统中,存在一种称为Shadowed密码哈希格式的机制,用于存储用户密码的安全散列值。当用户登录系统时,系统会将用户输入的密码与保存的哈希值进行比对,以验证密码的正确性。在上述代码中,首先使用。

UneDatabase的博客 254

YOLO26原创自研: 魔改Bottleneck,具备多尺度和特征通道融合的结构

魔改Bottleneck,具备多尺度和特征通道融合的结构,该模型在检测准确性方面都取得了良好的效果,尤其在缺陷检测方向。

①答疑群聊服务;②YOLO大模型知识问答系统;③计算机视觉论文生成智能体; 319
上一篇: 双目立体视觉匹配算法-----SAD匹配算法、BM算法、SGBM算法、GC算法
下一篇: 15道使用频率极高的基础算法题
zero_china
博客等级 码龄16年 10粉丝 0原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值