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 连接不上数据库
荆州定制软件开发多少钱
洋务运动思维导图软件开发
软件开发 英文简历