C想法之交换长度相同的两个整形数组

在这里我没有用中间变量来交换这两个数组的内容,我的想法是一对一对的交换看上去会快点吧 

#define _CRT_SECURE_NO_WARNINGS
#include
void my_strcpy(int pr[], int pt[], int sz)
{
	int i = 0;
	while (sz--)
	{
		*(pt + i) = *(pr + i);
		i++;
	}
}

void print(int arr1[], int arr2[],int sz)
{
	//一个打印数组的函数
	int n = 0;
	printf("arr1:");
	for (n = 0;n < sz;n++)
	{
		printf("%d ", arr1[n]);
	}
	printf("\n");
	printf("arr2:");
	for (n = 0;n < sz;n++)
	{
		printf("%d ", arr2[n]);
	}
}

int main()
{
	int arr1[] = { 1,2,3,4,5 };
	int arr11[50] = { 0 };
	int sz = sizeof(arr1) / sizeof(arr1[0]);
	my_strcpy(arr1, arr11, sz);//这个是把arr1复制一份,再赋给arr11
	int arr2[] = { 6,7,8,9,10 };
	int left = 0;
	int right = sz - 1;
	printf("交换前\n");
	print(arr1, arr2, sz);
	while (left <= right)
	{
		//这里我是一对(最左和最右)进行交换的
		arr1[left] = arr2[left];
		arr1[right] = arr2[right];
		arr2[left] = arr11[left];
		arr2[right] = arr11[right];
		left++;
		right--;
	}
	printf("\n交换后\n");
	print(arr1, arr2,sz);
	return 0;
}

C想法之交换长度相同的两个整形数组_第1张图片

你可能感兴趣的:(c语言)