#include<stdio.h>
#include<string.h>
#include<assert.h>
#include<stdlib.h>
#include<math.h>
#include<time.h>
#include<stdbool.h>
void Fun(int * num1, int* num2, int num1size, int num2size, int m, int n)
{
//从后往前进行比较,将比较出的较大值放在num1数组的后面
int k = m + n - 1;
int i = m - 1;
int j = n - 1;
while (i>=0&&j>=0)
{
if (num1[i] < num2[j])
{
num1[k] = num2[j];
k--; j--;
}
else
{
num1[k] = num1[i];
k--; i--;
}
}
//最后判断num2中的数据是否都移动到num1中,若没有,此时剩下的数据都是小于num1内的数据的,从后往前继续放入即可
if (j >= 0)
{
num1[k] = num2[j];
k--; j--;
}
}
void main()
{
int num1[8] = { 1,3,5 };
int num2[] = { 0,2,4,6,7 };
int num1size = sizeof(num1) / sizeof(num1[0]);
int m = 3;
for (int i = 0; i < num1size; i++)
{
printf("%d ", num1[i]);
}
printf("\n");
int num2size = sizeof(num2) / sizeof(num2[0]);
int n = num2size;
Fun(num1, num2, num1size, num2size, m, n);
for (int i = 0; i < num1size; i++)
{
printf("%d ", num1[i]);
}
}
合并两个有序数组
最新推荐文章于 2024-08-08 22:07:05 发布