#include "sort_.h"
void print_array(int *arr, int n)
// 打印数组
{
if(n==0){
printf("ERROR: Array length is ZEROn");
return;
}
printf("%d", arr[0]);
for (int i=1; i<n; i++) {
printf(" %d", arr[i]);
}
printf("n");
}
int* merge_array(int *arr1, int n1, int* arr2, int n2)
// 编程实现两个有序数组arr1和arr2合并
// 函数参数:有序数组arr1 数组arr1长度 有序数组arr2 数组arr2长度
// 函数返回值:返回从小到大排序后的合并数组
{
int* res;
res = new int[n1 + n2];
int a1 = 0, a2 = 0;
int index = 0;
for (int i = 0; i < n1+n2; i++) {
if (i < n1) {
res[i] = arr1[i];
}
else {
res[i] = arr2[i - n1];
}
}
sort(res, res + n1 + n2);
return res;
/********** End **********/
}
int* merge_sort(int *arr, int n)
// 基于merge_array函数编程实现归并排序:自上而下的递归方法
// 函数参数:有序数组arr 数组arr长度
// 函数返回值:返回从小到大排序后的数组
{
int mid = n / 2;
if (mid > 0) {
int* arr1 = new int[mid];
int n1 = mid;
int n2 = n - mid;
int* arr2 = new int[n2];
for (int i = 0; i < n; i++) {
if (i < mid) {
arr1[i] = arr[i];
}
else {
arr2[i - mid] = arr[i];
}
}
merge_sort(arr1, n1);
merge_sort(arr2, n - mid);
merge_array(arr1, n1, arr2, n2);
}
else
{
return merge_array(arr, n, NULL, 0);
}
}
最后
以上就是单薄热狗最近收集整理的关于C语言实现归并排序的全部内容,更多相关C语言实现归并排序内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复