【排序算法】 归并排序详解!深入理解!思想+源码实现! 您所在的位置:网站首页 什么是原地排序 【排序算法】 归并排序详解!深入理解!思想+源码实现!

【排序算法】 归并排序详解!深入理解!思想+源码实现!

2024-05-25 07:14| 来源: 网络整理| 查看: 265

📑前言

​ 什么是归并?通过归并排序就能让数据有序?分治法是怎么在归并排序上应用的?本文将对归并排序进行细致入微的讲解,庖丁解牛般让你彻底明白归并排序!

🌤️归并排序的思想☁️基本思想

归并排序(MERGE-SORT)是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Divide andConquer)的一个非常典型的应用。 将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为二路归并。

☁️归并的思想实现

​ 将两个有序数组合并成一个有序数组的操作。在归并排序中,通过不断地将数组分成两半,分别对每一半进行排序,然后将排好序的两个子数组合并成一个有序数组,最终得到整个数组有序的结果。

☁️分治法

​ 分治法在归并排序中的应用是将问题分解成更小的子问题,然后分别解决这些子问题,最后将子问题的解合并起来得到原问题的解。具体来说,归并排序的分治法应用如下:

分解:将待排序的数组分成两个子数组,分别为左子数组和右子数组。解决:递归地对左子数组和右子数组进行归并排序。合并:将排好序的左子数组和右子数组合并成一个有序数组。🌤️归并排序的实现☁️核心操作步骤

静图全步骤概览:

在这里插入图片描述在这里插入图片描述

动图一步步的逻辑实现:

在这里插入图片描述在这里插入图片描述☁️递归版归并实现代码语言:javascript复制//归并 void _MergeSort(int* a, int* tmp, int begin, int end) { if (end [begin, mid][mid+1, end]->tmp //归并 int begin1 = begin, end1 = mid; int begin2 = mid + 1, end2 = end; int index = begin; while (begin1


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有