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

2021-10-15:合并两个有序的数组,第1张

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;
}

运行结果:

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/4654044.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-06
下一篇 2022-11-06

发表评论

登录后才能评论

评论列表(0条)

保存