题目来自:http://blog.youkuaiyun.com/bigheadzzy/article/details/8083699
#include <iostream>
using namespace std;
void mySeap(int&a ,int &b)
{
a=a^b;
b=a^b;
a=b^a;
}
void sulotion(int * a,const int nSize)
{
int* b=new int[nSize];
//int a[]={1,0,8,4,3,2,7,5,6};
for ( int i=0 ; i<nSize ; ++i ){
b[a[i]]=i;
}
for ( int i=0 ; i<nSize ; ++i ){
if ( a[i]!=i && a[i]!=0 ){
//a[i]和0交换
mySeap(a[i],a[b[0]]);
b[a[b[0]]]=b[0];
b[0]=i;
//i和0交换
mySeap(a[b[i]],a[b[0]]);
b[0]=b[i];
b[i]=i;
}
}
mySeap(a[b[0]],a[0]);
b[b[0]]=b[0];
b[0]=0;
for ( int i=0 ; i<9 ; ++i ){
cout<<b[i]<<" ";
if ( (i+1)%5==0 ){
cout<<endl;
}
}
delete []b;
}
int main()
{
int a[]={1,0,8,4,3,2,7,5,6};
sulotion(a,9);
for ( int i=0 ; i<9 ; ++i ){
cout<<a[i]<<" ";
if ( (i+1)%5==0 ){
cout<<endl;
}
}
return 0;
}