| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 数据结构与算法 -> 【算法】逻辑十分缜密,思路清晰的带大家一次性学会常见的排序算法系列ヾ(≧▽≦*)o。(四)归并排序 -> 正文阅读 |
|
[数据结构与算法]【算法】逻辑十分缜密,思路清晰的带大家一次性学会常见的排序算法系列ヾ(≧▽≦*)o。(四)归并排序 |
?前言?:算法是一个程序员的内功,能很好的体现程序员的编程思维,通过学习和掌握常见的算法,不仅能提高coding能力,还能更加容易在笔面试中脱颖而出。本专栏将记录博主刷算法题的过程,不定期的会更新一些优质的算法题。如果对大家有帮助,别忘了三连支持哟! 目录 ?归并排序的思想?
?相信通过上述内容,大家已经知道了如何学习归并排序,那么接下来我来讲解归并的总思路。 💎归并排序的总思路💎🔑:大家应该都熟悉递归的本质了,递归其实就是一种将问题逐步简化的方法,因此我们在写递归时一定要宏观把握,把握住化简问题的总思路。 ? ? ? ?归并排序的总思路是我们想让一个范围内有序,我们只需要将这个范围一分为二,先让这个范围内的左半部分有序,再让这个范围的右半部分有序,然后我们只需要把两个有序的序列合并成整个序列全有序(归并操作)。我们只需要沿着这个总思路,将整个数组不断二分,不断递进,直到最后一次二分导致一个半区只有一个元素时停止,我们只需要通过回溯时不断合并,最终就能让整体有序。 💎具体是如何归并的呢?💎🔑:我们通过上述学习知道了我们在递归回溯时进行归并,而每次归并前都已经保证了左半部分和右半部分均有序,在这个前提下问题就转化成了如何将两个有序的序列合并成一个整体并保证其有序。 ?那如何解决这个问题呢? ? ? ?这个问题很简单相信大家很快就能想到,我们知道合并出来的最小值必定在左右两部分的最小值中产生,这样我们就得到了最小值,我们再从左右两半部分中去掉这个最小值。同理可得,第二小的数值必定在此时左右两半部分中现存最小值中产生。以此类推我们就得到了,整体有序,当然因为要存放这个整体,所以我们需要开辟一个辅助数组来储存整体。 ??💡:听到这里相信大家仍然有很多疑惑,毕竟光说不上代码永远是空架子,接下来我给出代码,希望大家能认真分析代码,并自己手敲多练几次,很多疑惑在练习中就能解决。 ?归并排序的总代码?
?归并排序的时间复杂度的分析?以上代码,还可做优化在此仅作参考,若有更好的算法,还望能够私信告知,多谢各位。 由于本人水平十分有限,若有错误请即使告知!如果有帮助别忘了,万分感谢。 点赞👍? ? ? ? ?收藏?? ? 关注? ? ? ? |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/26 5:29:51- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |