C++如何实现归并排序算法
发表于:2026-11-04 作者:千家信息网编辑
千家信息网最后更新 2026年11月04日,这篇文章将为大家详细讲解有关C++如何实现归并排序算法,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。归并算法开始首先要对一段要有序的数字进行排序void merg_
千家信息网最后更新 2026年11月04日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安全错误
数据库的锁怎样保障安全
互联网科技园
互联网科技产业
美国互联网科技巨头监管
朗新科技与工业互联网
互联网科技作文
紫鲸互联网科技
米客互联网科技
互联网科技美容
盛创互联网科技有限公司
宁波青枫互联网科技有限公司
互联网为啥属于高科技
福建科技产业互联网发展
智腾互联网科技有限公司
链环科技传统企业怎么转型互联网
民营互联网公司国防科技
互联网科技资金流入
广州有谷有贝互联网科技有限公司
扫呗互联网科技有限公司
陕西彩京云互联网科技有限公司
平安好医生打造互联网科技医疗
中关村互联网科技集团
西安互联网科技
互联网科技排名
互联网科技大会案例
海南科技产业互联网平台
东莞新华互联网科技学校
国大互联网教育科技有限公司薪资
西安有哪些互联网高科技企业
互联网高科技行业有哪些企业
陕西九四连强互联网科技有限公司