千家信息网

C++如何实现归并排序算法

发表于:2025-11-16 作者:千家信息网编辑
千家信息网最后更新 2025年11月16日,这篇文章将为大家详细讲解有关C++如何实现归并排序算法,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。归并算法开始首先要对一段要有序的数字进行排序void merg_
千家信息网最后更新 2025年11月16日C++如何实现归并排序算法

这篇文章将为大家详细讲解有关C++如何实现归并排序算法,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

归并算法开始首先要对一段要有序的数字进行排序

void merg_sort(int* a, int fbegin, int fend, int sbegin, int send, int* b){        int L = fbegin;        int R = sbegin;        int cursize = fbegin;//z这里不能重0开始 递归后面是按对应开始位置进行赋值的         while (L <= fend && R <= send)        {                if (a[L] > a[R])                {                        b[cursize++] = a[R++];                }                else                {                        b[cursize++] = a[L++];                }        }        while (L <= fend)        {                b[cursize++] = a[L++];        }        while (R <= send)        {                b[cursize++] = a[R++];        }        memcpy(a+fbegin, b+fbegin, sizeof(int) * (send-fbegin+1));  //要开始位置进行赋值不然后面递归会造成重复对同一个地方赋值 }

然后通过递归将要排数字进行左右分开 直到分为都是一个元素的时候(一个元素一定是有序的)

void Merg_sort(int* a, int left, int right, int* b){   int min = (left + right) / 2;        if (left < right)         {                Merg_sort(a, left, min, b);//将左边的分开                Merg_sort(a, min + 1, right, b);//将右边的分开                merg_sort(a, left, min, min + 1, right, b);//逆过程 先分开后排序 后分开的先排序         }}

最后代码演示

int main(){   int a[10] = { 1,3,4,9,9,2,4,15,17,10 };        int b[10];        Merg_sort(a, 0, 9, b);        for (int i = 0; i < 10; i++)        {                printf("%d\t", a[i]);        }        return 0;}

结果

1 2 3 4 4 9 9 10 15 17
--------------------------------
Process exited after 0.2193 seconds with return value 0
请按任意键继续. . .

关于"C++如何实现归并排序算法"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

排序 算法 篇文章 递归 C++ 有序 位置 元素 数字 更多 不错 实用 代码 内容 右边 地方 文章 时候 知识 结果 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 幻塔当前服务器倍率 服务器管理界面没有信息 软件开发上班时间一般是多少 稀土地球化学数据库 手游服务器连接超时是什么意思 计算机网络技术用古诗文描述 国内有多少家软件开发企业 谷歌加速器服务器错误怎么办 服务器射击游戏推荐 服务器主板报警五短一长 3602020网络安全排名 数据库基本检索技术有哪些 公安网络安全学习心得 软件开发转型怎么转 服务器机房托管多少钱 网络安全自查情况一般怎么填写 计算机网络安全管理规范 服务器能当电脑玩吗 软件开发app一般要多少钱 微软数据库商业模式 重庆一证通网络技术有限公司 网络运营者按照网络安全法 北京小型软件开发服务介绍 服务器启动电源灯和硬盘灯一直闪 城域网网络安全整改情况 linux服务器运行 php 连接不上数据库 荆州定制软件开发多少钱 洋务运动思维导图软件开发 软件开发 英文简历
0