C语言归并排序(合并排序)算法以及代码 |
您所在的位置:网站首页 › c语言对数据排序流程图 › C语言归并排序(合并排序)算法以及代码 |
合并排序是采用分治法,先将无序序列划分为有序子序列,再将有序子序列合并成一个有序序列的有效的排序算法。 原理:先将无序序列利用二分法划分为子序列,直至每个子序列只有一个元素(单元素序列必有序),然后再对有序子序列逐步(两两)进行合并排序。合并方法是循环的将两个有序子序列当前的首元素进行比较,较小的元素取出,置入合并序列的左边空置位,直至其中一个子序列的最后一个元素置入合并序列中。最后将另一个子序列的剩余元素按顺序逐个置入合并序列尾部即可完成排序。整体过程如下图: 两个有序子序列合并的原理如下图: 代码:递归式实现 #include #include void mergesort(int A[],int n) //合并排序的递归主体 { void merge(int A[], int L[], int R[], int l, int r); //声明merge函数 if(n>1) //多于一个元素才需要排序 { int mid=n/2; int *left=(int*)malloc(sizeof(int)*mid); int *right=(int*)malloc(sizeof(int)*(n-mid)); for(int i=0;i |
今日新闻 |
点击排行 |
|
推荐新闻 |
图片新闻 |
|
专题文章 |
CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭 |