合并整型数组
怎么样可以将两个已经排序的整型数组合并在其中一个数组里边 数组初始化后就不能改变大小了,你要怎么合并到其中一个? 本帖最后由 jackz007 于 2021-10-31 13:08 编辑#include <stdio.h>
void merge(int a[] , int n , int b[] , int m)
{
int i , j , k ;
if(n > 1 && m > 1) {
if(a > a && b > b || a < a && b < b) {
if(a > a) {
for(i = 0 ; i < n ; i ++) {
for(j = 0 ; j < m && b < a ;) {
for(k = n ; k > i ; k --) a = a ;
a = b ;
for(k = j + 1 ; k < m ; k ++) b = b ;
n ++ ;
m -- ;
}
}
} else {
for(i = 0 ; i < n ; i ++) {
for(j = 0 ; j < m && b > a ;) {
for(k = n ; k > i ; k --) a = a ;
a = b ;
for(k = j + 1 ; k < m ; k ++) b = b ;
n ++ ;
m -- ;
}
}
}
}
}
}
int main(void)
{
int a = {3 , 5 , 6 , 8 , 10} , b = {1 , 2 , 4 , 7 , 9} , i ;
int c = {9 , 7 , 4 , 2 , 1} , d = {10 , 8 , 6 , 5 , 3} ;
merge(a , 5 , b , 5) ;
for(i = 0 ; i < 10 ; i ++) printf(" %d" , a) ;
printf("\n") ;
merge(c , 5 , d , 5) ;
for(i = 0 ; i < 10 ; i ++) printf(" %d" , c) ;
printf("\n") ;
}
编译、运行实况:
D:\00.Excise\C>g++ -o x x.c
D:\00.Excise\C>x
1 2 3 4 5 6 7 8 9 10
10 9 8 7 6 5 4 3 2 1
D:\00.Excise\C> 合并在其中一个数组里是不可能的,除非创建另一个新数组(大小是两个数组的大小之和)
然后逐个比较两个数组里的元素大小进行排列赋值进新数组里便可。 数据结构
页:
[1]