下面为代码,目的是交换一个数组前m和元素和后n个元素(总长度为m+n):
#include "stdafx.h"
#include <iostream>
using namespace std;
void arr_swap(int a[],int m,int n);
void reverse(int a[],int left, int right);
int _tmain(int argc, _TCHAR* argv[])
{
int a[10];
for(int i=0;i<10;i++){
a[i]=i;
}
arr_swap(a,6,4);
for(int i=0;i<10;i++){
cout<<a[i]<<" ";
}
return 0;
}
void arr_swap(int a[],int m,int n)
{
reverse(a,0,m+n-1);
reverse(a,0,n-1);
reverse(a,n,m+n-1);
}
void reverse(int a[],int left, int right)
{
while(left!=right){
int temp=a[left];
a[left]=a[right];
a[right]=temp;
left++;
right--;
}
}