题目描述:
已知在一维数组A[m+n]中依次存放着两个顺序表(a1,a2,a3…am)和(b1,b2,b3…bn).编出一个算法,将数组中两个顺序表的位置互换,即将(b1,b2,b3…bn)放在(a1,a2,a3…am)的前面.
算法思想:
两端交换
核心代码:
#include <stdio.h>
#include <algorithm>
#define ElemType int
#define MaxSize 10
void Reverse_1(int left,int right,int A[])
{
for(int i=left,j=right;i<j;i++,j--)
{
int temp;
temp=A[i];
A[i]=A[j];
A[j]=temp;
}
}
void Reverse_2(int left,int right,int A[])
{
int mid=(left+right)/2;
for(int i=0;i<mid-left;i++)//这里是mid-left
{
int temp;
temp=A[left+i];
A[left+i]=A[right-i];
A[right-i]=temp;
}
}
int main()
{
int A[10]={5,6,7,8,9,0,1,2,3,4};
int m=5;
int n=5;
Reverse_2(0,m-1,A);
Reverse_2(m,m+n-1,A);//数组A[m+n]中,从0到m-1存放顺序表(a1,……,am)
Reverse_2(0,m+n-1,A);//从m到m+n-1存放顺序表(b1,……,bn)
for(int i=0;i<10;i++)
{
printf("%d ",A[i]);
}
return 0;
}