将2个按升序排列的数列,仍按升序合并存放到另一个数组中,要求,每个数都一次到为,不得在新数组中重新排序
来源:百度知道 编辑:UC知道 时间:2024/06/15 20:06:50
merge sort的一个子程序(假设两个数列是由小到大的)
void merge(int arr1[], int arr2[], int arr3[], int len1, int len2){
//arr1,arr2表示两个数组。arr3是新数组,且长度足够
//len1:arr1的长度 len2同理
int i=0,j=0,pos=0;
for(;i<=len1-1 && j<=len2-1;++pos){
if(arr1[i]<arr2[j])
arr3[pos]=arr1[i++];
else
arr3[pos]=arr2[j++];
}
}
for(;i<=len1-1;++i)
arr3[++pos]=arr1[i];
for(;j<=len2-1;++j)
arr3[++pos]=arr1[j];
}
#include <stdio.h>
#include <stdlib.h>
void func(int arr_dst[], int arr_1[], int len_1, int arr_2[], int len_2) {
int i, j, k;
for (i=j=k=0; i<len_1; ++i) {
while (j<len_2 && arr_1[i]>arr_2[j]) {
arr_dst[k++] = arr_2[j];
++j;
}
arr_dst[k++] = arr_1[i];
}
while (j &l