博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
分治——合并排序
阅读量:5248 次
发布时间:2019-06-14

本文共 685 字,大约阅读时间需要 2 分钟。

分治策略中有一个经典的算法就是合并排序。这个算法的精髓也是分治二字。分而治之。

将一个大规模的问题切割成若干个相同的小问题,小问题的规模非常小,非常easy解决,攻克了小的问题后再对这些小问题的结果进行合并得到大规模问题的解答。

合并排序便是分治策略中比較经典的算法。首先是合并。两个排列有序的数列经过合并后成为有序的数组:代码例如以下:

void _merge(int *A,int left,int middle,int right){	int i=left,j=middle+1,k=0;	int *C;	C=new int[right-left+1];	while(i
上面的算法是将一个数组分成左右两个进行合并,假设这左右的两个数组都是排列有序的话,那么合成的新的数列也是有序的,以下的任务就是怎么将左右的两个数列排列成有序的。方法就是用递归思想。不断的递归,将数列不断的划分。划分成最小的单元,仅仅有一个数的时候,那么再进行合并,合并成的数列便是有序数列了,代码例如以下:

void _merge_sort(int *A,int left,int right){		if(left
最后进行測试:

void main(){	int ib[]={2,3,1,0,9,1,3,5};	int length=sizeof(ib)/sizeof(int);	_merge_sort(ib,0,length-1);	for(int i=0;i
结果例如以下:

转载于:https://www.cnblogs.com/mengfanrong/p/5148413.html

你可能感兴趣的文章
设计模式之简单工厂模式
查看>>
集成学习算法
查看>>
构造方法和final,static关键字
查看>>
cmd 下切换目录
查看>>
从程序员到项目经理(29):怎样写文档
查看>>
(原创)如何将Nios II硬件和软件合成一个文件(NIOS II)(硬件)(软件)(合并)...
查看>>
浅谈java volatile
查看>>
把linux可执行程序做成一个服务[转]
查看>>
docker入门基础(八)
查看>>
1.tomcat部署项目的几种方式和weblogic部署方式及一点通讯
查看>>
c语言在windows下和Mac下的不同表现!
查看>>
单链表实现的栈
查看>>
AC自动机
查看>>
用C#实现网络爬虫(二)
查看>>
Android 动画之ScaleAnimation应用详解
查看>>
【转】WEKA 中用于学习方案的通用选项
查看>>
java IO和NIO区别
查看>>
10个漂亮的响应式的食品 WordPress 美食模板
查看>>
炫!一组单元素实现的 CSS 加载进度提示效果
查看>>
转-正则表达式
查看>>