栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

2021-10-15:合并两个有序的数组

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

2021-10-15:合并两个有序的数组

2021年10月15日

学习内容:合并两个有序的数组

时间复杂度:O(n)
代码示例(1)

int* MergeTwoArr(int arr[], int len_a, int brr[], int len_b)
{
	if (arr == NULL || brr == NULL)
		return NULL;
	if (len_a <= 0 || len_b <= 0)
		return NULL;
	int* crr = (int*)malloc(sizeof(int) * (len_a + len_b));
	if (crr == NULL) return NULL;
	memset(crr, 0, sizeof(int) * (len_a + len_b));
	int i = len_a - 1;
	int j = len_b - 1;
	int k = len_a + len_b - 1;

	while (i >= 0 && j >= 0)
	{
		if (arr[i] > brr[j])
		{
			crr[k--] = arr[i--];
		}
		else
		{
			crr[k--] = brr[j--];
		}
	}

	while (i >= 0)
	{
		crr[k--] = arr[i--];
	}	
	while (j >= 0)
	{
		crr[k--] = brr[j--];
	}	

	return crr;
}

void Test()
{
	int arr[] = { 1, 3, 5, 7, 9, 11 };
	int brr[] = { 2, 4, 6, 8, 10, 12 };
	int len_a = sizeof(arr) / sizeof(arr[0]);
	int len_b = sizeof(brr) / sizeof(brr[0]);
	int * crr = MergeTwoArr(arr, len_a, brr, len_b);
	for (int i = 0; i < len_a + len_b; i++)
	{
		printf("%d ", crr[i]);
	}
	printf("n");
}

int main()
{
	Test();
	return 0;
}

运行结果:

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/330851.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号