【算法分析】常用算法详解,小白必看!冒泡排序|希尔排序|插入排序|选择排序|归并排序|算法思想

【算法分析】常用算法详解,小白必看!冒泡排序|希尔排序|插入排序|选择排序|归并排序|算法思想

算法分析

算法基础

算法的五个重要特性:

  1. 有穷性:对于合法输入,在执行有穷步后结束,且每一步都可在有穷时间内完成
  2. 确定性:每一条指令必须有确切的含义,对于相同的输入只能得出相同的输出
  3. 可行性:算法中描述的操作都可以通过有限的基本运算实现
  4. 输入:0或多个输入
  5. 输出:1或多个输出

排序算法

www.zeeklog.com - 【算法分析】常用算法详解,小白必看!冒泡排序|希尔排序|插入排序|选择排序|归并排序|算法思想

各排序算法

www.zeeklog.com - 【算法分析】常用算法详解,小白必看!冒泡排序|希尔排序|插入排序|选择排序|归并排序|算法思想

img

插入排序

通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。类似于扑克牌中给牌排序,从未排序的牌中选择一张对比已排序的牌,在比它小的牌后面插入。

www.zeeklog.com - 【算法分析】常用算法详解,小白必看!冒泡排序|希尔排序|插入排序|选择排序|归并排序|算法思想

插入排序

希尔排序(Shell排序)

先将整个带排序序列分割成若干子序列,然后分别进行插入排序,待整个序列记录基本有序时,再进行一次完整的插入排序。

www.zeeklog.com - 【算法分析】常用算法详解,小白必看!冒泡排序|希尔排序|插入排序|选择排序|归并排序|算法思想

希尔排序

冒泡排序

重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。每一轮比较结束后,最后一个数字是这一轮比较中的最大值。

www.zeeklog.com - 【算法分析】常用算法详解,小白必看!冒泡排序|希尔排序|插入排序|选择排序|归并排序|算法思想

冒泡排序

选择排序

在未排序的序列中找到最大(小)值,放到序列的头部或尾部,时间复杂度 O ( n 2 ) O(n^2) O(n2)。

www.zeeklog.com - 【算法分析】常用算法详解,小白必看!冒泡排序|希尔排序|插入排序|选择排序|归并排序|算法思想

选择排序

归并排序

建立在归并操作上的一种有效的排序算法。该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。

www.zeeklog.com - 【算法分析】常用算法详解,小白必看!冒泡排序|希尔排序|插入排序|选择排序|归并排序|算法思想

归并排序

合并相邻子序列:

www.zeeklog.com - 【算法分析】常用算法详解,小白必看!冒泡排序|希尔排序|插入排序|选择排序|归并排序|算法思想

合并相邻子序列

www.zeeklog.com - 【算法分析】常用算法详解,小白必看!冒泡排序|希尔排序|插入排序|选择排序|归并排序|算法思想

重复步骤

快速排序

由东尼·霍尔所发展的一种排序算法。在平均状况下,排序 n 个项目要$Ο(nlogn)  次比较。在最坏状况下则需要 次比较。在最坏状况下则需要 次比较。在最坏状况下则需要O(n^2)$ 次比较,但这种状况并不常见。事实上,快速排序通常明显比其他 $Ο(nlogn) $ 算法更快,因为它的内部循环(inner loop)可以在大部分的架构上很有效率地被实现出来。快速排序又是一种分而治之思想在排序算法上的典型应用。

  1. 从数列中挑出一个元素,称为 “基准”(pivot);
  2. 重新排序数列,所有元素比基准值小的摆放在基准前面,所有元素比基准值大的摆在基准的后面(相同的数可以到任一边)。在这个分区退出之后,该基准就处于数列的中间位置。这个称为分区(partition)操作;
  3. 递归地(recursive)把小于基准值元素的子数列和大于基准值元素的子数列排序;
www.zeeklog.com - 【算法分析】常用算法详解,小白必看!冒泡排序|希尔排序|插入排序|选择排序|归并排序|算法思想

快速排序

堆排序

堆排序(Heapsort)是指利用堆这种数据结构所设计的一种排序算法。堆积是一个近似完全二叉树的结构,并同时满足堆积的性质:即子结点的键值或索引总是小于(或者大于)它的父节点。堆排序可以说是一种利用堆的概念来排序的选择排序。分为两种方法:

  1. 大顶堆:每个节点的值都大于或等于其子节点的值,在堆排序算法中用于升序排列;
  2. 小顶堆:每个节点的值都小于或等于其子节点的值,在堆排序算法中用于降序排列;

其他

还有基数排序、计数排序、桶排序,这几个排序算法都利用了桶的概念。桶排序是每个桶都可以存放一个范围的数字,计数排序是每个桶只放一个数字,基数排序是根据数据的每一位来分配桶,所以也可以处理字符串。

www.zeeklog.com - 【算法分析】常用算法详解,小白必看!冒泡排序|希尔排序|插入排序|选择排序|归并排序|算法思想

基数排序

算法思想

贪婪算法

虽然每次的选择都是局部最优,当在算法结束的时候,其期望是全局最优才是正确的。不过有时,在不同条件与要求下时,最优解的答案可能不止有一个或不一样,而贪婪算法也可以得出一个近似的答案。

当前步骤最优解,非整体

分治算法

分治算法不是简单的递归,而是将大的问题递归解决较小的问题,然后从子问题的解构建原问题的解。比如,快速排序和归并排序算分治算法,而图的递归深度搜索和二叉树的递归遍历则不是分治算法的运用。

分解,递归,合并

动态规划

动态规划与分治算法的区别是,两种算法同样是将较大的问题分解成较小问题,而动态规划对这些较小的问题并不是对原问题明晰的分割,其中一部分是被重复求解的,因此动态规划将较小问题的解记录下来,使得在处理较大问题的时候,可以不用重复去处理较小的问题,而是直接利用所记录的较小问题的答案来求解。

每一步最优以保证全局最优

随机化算法

随机化算法的一个应用是在快速排序中对枢纽元素的选择,使得算法的运行时间不止依赖于特定的输入,还而且还依赖于所出现的随机数。虽然一个随机化算法的最坏情形运行时间常常与非随机化算法的最坏情形运行时间相同,但两者还是有区别的,好的随机化算法没有坏的输入,而只有坏的随机数。

回溯算法

回溯算法相当于穷举搜索的巧妙实现,对比蛮力的穷举搜索,回溯算法可以对一些不符合要求的或者是重复的情况进行裁剪,不再对其进行搜索,以减少搜索的工作量提高效率。比如,在图运用回溯算法的深度优先搜索遍历中,会对已搜索遍历过的顶点进行标记,避免下次的回溯搜索中对再次出现的该顶点进行重复遍历。  ---------------------------END---------------------------

题外话

“不是只有程序员才要学编程?!”

认真查了一下招聘网站,发现它其实早已变成一项全民的基本技能了。

连国企都纷纷要求大家学Python!

www.zeeklog.com - 【算法分析】常用算法详解,小白必看!冒泡排序|希尔排序|插入排序|选择排序|归并排序|算法思想

世界飞速发展,互联网、大数据冲击着一切,各行各业对数据分析能力的要求越来越高,这便是工资差距的原因,学习编程顺应了时代的潮流。

在这个大数据时代,从来没有哪一种语言可以像Python一样,在自动化办公、爬虫、数据分析等领域都有众多应用。

更没有哪一种语言,语法如此简洁易读,消除了普通人对于“编程”这一行为的恐惧,从小学生到老奶奶都可以学会。

《2020年职场学习趋势报告》显示,在2020年最受欢迎的技能排行榜,Python排在第一。

www.zeeklog.com - 【算法分析】常用算法详解,小白必看!冒泡排序|希尔排序|插入排序|选择排序|归并排序|算法思想

它的角色类似于现在Office,成了进入职场的第一项必备技能。

如果你也想增强自己的竞争力,分一笔时代的红利,我的建议是,少加点班,把时间腾出来,去学一学Python。

因为,被誉为“未来十年的职场红利”的Python,赚钱、省钱、找工作、升职加薪简直无所不能!

目前,Python人才需求增速高达**174%,人才缺口高达50万,**部分领域如人工智能、大数据开发, 年薪30万都招不到人!

www.zeeklog.com - 【算法分析】常用算法详解,小白必看!冒泡排序|希尔排序|插入排序|选择排序|归并排序|算法思想

感兴趣的小伙伴,赠送全套Python学习资料,包含面试题、简历资料等具体看下方。

👉ZEEKLOG大礼包🎁:(安全链接,放心点击)

一、Python所有方向的学习路线

Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照下面的知识点去找对应的学习资源,保证自己学得较为全面。

www.zeeklog.com - 【算法分析】常用算法详解,小白必看!冒泡排序|希尔排序|插入排序|选择排序|归并排序|算法思想


www.zeeklog.com - 【算法分析】常用算法详解,小白必看!冒泡排序|希尔排序|插入排序|选择排序|归并排序|算法思想

二、Python必备开发工具

工具都帮大家整理好了,安装就可直接上手!

www.zeeklog.com - 【算法分析】常用算法详解,小白必看!冒泡排序|希尔排序|插入排序|选择排序|归并排序|算法思想

三、最新Python学习笔记

当我学到一定基础,有自己的理解能力的时候,会去阅读一些前辈整理的书籍或者手写的笔记资料,这些笔记详细记载了他们对一些技术点的理解,这些理解是比较独到,可以学到不一样的思路。

www.zeeklog.com - 【算法分析】常用算法详解,小白必看!冒泡排序|希尔排序|插入排序|选择排序|归并排序|算法思想

四、Python视频合集

观看全面零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。

www.zeeklog.com - 【算法分析】常用算法详解,小白必看!冒泡排序|希尔排序|插入排序|选择排序|归并排序|算法思想

五、实战案例

纸上得来终觉浅,要学会跟着视频一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

www.zeeklog.com - 【算法分析】常用算法详解,小白必看!冒泡排序|希尔排序|插入排序|选择排序|归并排序|算法思想

六、面试宝典

www.zeeklog.com - 【算法分析】常用算法详解,小白必看!冒泡排序|希尔排序|插入排序|选择排序|归并排序|算法思想
www.zeeklog.com - 【算法分析】常用算法详解,小白必看!冒泡排序|希尔排序|插入排序|选择排序|归并排序|算法思想
简历模板
www.zeeklog.com - 【算法分析】常用算法详解,小白必看!冒泡排序|希尔排序|插入排序|选择排序|归并排序|算法思想

Read more

SpringAI Agent开发秘籍:让javaer也可以用上Agent Skills

SpringAI Agent开发秘籍:让javaer也可以用上Agent Skills

告别传统AI开发!SpringAI Agent + Skills重新定义智能应用 要说最近AI相关话题中什么最火,毫无疑问是Claude Skills,让我感到震惊的倒不是它为什么火爆,而是SpringAI居然已经迅速支持上Skills了,这效率真的是堪比🚀了。 谁说AI时代java开发者要掉队了? 肉虽然不一定吃得上,但是喝口汤还是妥妥的 接下来我们通过构建一个code reviewer, 来实际体验一把,如何将SpringAI和Skills结合起来使用 一、项目创建 1. 基础环境要求 要体验SpringAI & Skills,目前需要升级到SpringAI 2.x版本,同时我们的SpringBoot也可以升级到4.x * SpringAI: 2.0.0-M2 * JDK21 * SpringBoot: 4.0.1 除了这几个基本依赖之外,我们可以选择一个支持Function Tool的大模型来作为这个实现的大脑中枢 我们这里选择智谱的大模型GLM-4.5-Flash (原因就是因为它免费,且效果还行,对所有想体验的小伙伴没有任何额外成本投入) 2.

By Ne0inhk

Trae java项目配置全局maven和jdk

** Trae java项目配置全局maven和jdk ** 依次打开:设置-开发环境-Maven-for-Java(或全局搜索Maven-for-Java配置) 找到以下设置,点击在settings.json中编辑 在出现的配置文件中,填入以下配置: {"maven.excludedFolders":["**/.*","**/node_modules","**/target","**/bin","**/archetype-resources"],"maven.settingsFile":"你本地文件地址,例如:E:\\****\\apache-maven-3.8.4\\conf\\settings.xml","workbench.colorTheme":"Default

By Ne0inhk
【2026 最新】Java 与 IntelliJ IDEA 详细下载安装教程 带图演示(Windows 版)

【2026 最新】Java 与 IntelliJ IDEA 详细下载安装教程 带图演示(Windows 版)

前言 Java 是全球最广泛使用的编程语言之一,适用于企业级应用、Android 开发、大数据处理和后端服务。而 IntelliJ IDEA(简称 IDEA)作为 JetBrains 公司推出的旗舰级 Java IDE,凭借卓越的智能代码补全、深度框架集成、强大的调试器和流畅的用户体验,被广大开发者誉为“最强 Java 开发工具”。 本教程专为 Windows 系统用户 编写,将手把手指导你完成 Java Development Kit (JDK) 和 IntelliJ IDEA 的下载、安装与基础配置,助你快速搭建专业的 Java 开发环境。 一、Java(JDK)下载与安装 💡 注意:开发 Java 程序需要安装 JDK(

By Ne0inhk
基于Java的百度地图路线规划服务开发全攻略

基于Java的百度地图路线规划服务开发全攻略

目录 前言 一、驾车路线服务简介 1、百度路线规划服务 2、驾车路线服务 3、请求参数 4、响应参数 二、UniHttp接口访问集成 1、访问接口创建 2、本地调用测试 3、响应对象初探 三、响应对象的Java封装 1、驾车路线服务响应类图 2、响应对象实现         a、公共属性类         b、驾车路线数据传输类 c、导航信息类         d、具体路线分段信息类 3、使用GSON转换实例 四、常见问题 1、坐标顺序问题 2、坐标格式问题 五、总计 前言         在当今数字化时代,地理信息系统(GIS)技术已经深入到我们生活的方方面面。无论是日常出行规划、

By Ne0inhk