合并两个有序数组

题目:

        两个按 非递减顺序 排列的整数数组arr和brr,另有两个整数a,b分别表示两个数组中有效元素数目,现将两个数组按 非递减顺序合并到arr数组中。

        注意:不创建新的数组,直接将结果存放在arr中,所以arr的初始长度是a+b

分析:

        对两个数组中元素可能数目进行讨论

1. b == 0 && a >0   (直接输出arr数组即可,后续不在考虑)
2. a == 0 && b >0
3. a > 0 && b > 0

针对可能2:
直接将brr中元素全部按顺序存放到arr中即可

针对可能3:
我们从后向前开始比较(有效元素)
分为两种情况 ① arr中待放元素<brr中待放元素     ->将brr待放元素放在合适位置
                       ② arr中待放元素>=brr中待放元素  ->将arr待放元素放在合适位置
如图:就是实现的简单原理

实现代码:

void merge(int* arr, int a, int* brr, int b)//a,b分别表示数组中有效元素个数
{
	while (a > 0 && b > 0)
	{
		if (arr[a - 1] < brr[b - 1])
		{
			arr[a + b - 1] = brr[b - 1];
			--b;
		}
		else
		{
			arr[a + b - 1] = arr[a - 1];
			--a;
		}
	}
	if (a == 0 && b > 0)
	{
		for (int i = 0; i < b; ++i)
		{
			arr[i] = brr[i];
		}
	}
}


int main()
{
	int arr[] = { 1,3,5,7,0,0,0,0 };
	int brr[] = { 2,4,6,8 };
	merge(arr, 4, brr, 4);
	int n = sizeof(arr) / sizeof(arr[0]);//计算数组长度
	for (int i = 0; i < n; i++)
	{
		printf("%d  ", arr[i]);
	}
	return 0;
}

实验结果:

相关推荐

  1. 算法:合并有序数组

    2024-03-25 03:10:01       38 阅读
  2. 【排序算法】合并有序数组

    2024-03-25 03:10:01       31 阅读
  3. LeetCode 88. 合并有序数组

    2024-03-25 03:10:01       37 阅读
  4. leetcode88--合并有序数组

    2024-03-25 03:10:01       25 阅读
  5. 【LeetCode】合并有序数组

    2024-03-25 03:10:01       16 阅读
  6. 88. 合并有序数组

    2024-03-25 03:10:01       13 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-03-25 03:10:01       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-03-25 03:10:01       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-03-25 03:10:01       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-03-25 03:10:01       18 阅读

热门阅读

  1. AcWing 3417.砝码称重

    2024-03-25 03:10:01       19 阅读
  2. qinakun实现公共依赖的加载

    2024-03-25 03:10:01       25 阅读
  3. Git tag总结

    2024-03-25 03:10:01       16 阅读
  4. vscode集成git管理项目

    2024-03-25 03:10:01       19 阅读
  5. PiflowX-Faker组件

    2024-03-25 03:10:01       22 阅读
  6. bind更改this指向问题

    2024-03-25 03:10:01       16 阅读
  7. 三维重建-单目相机标定

    2024-03-25 03:10:01       19 阅读
  8. c语言如何颠倒字符串顺序

    2024-03-25 03:10:01       18 阅读
  9. 网络安全工程师学习路线汇总

    2024-03-25 03:10:01       19 阅读
  10. 安卓面试题多线程 131-135

    2024-03-25 03:10:01       18 阅读