不得不说我大意,可以想象一个冒泡排序就可以解决的事情却被它撂倒了,实在是个教训。
由于仅要求输出交换次数,而且值和索引有相关性,一不小心之下,被冒泡顶沟里了。
int run(const int *a,int n) {
int i,j,tmp;
int count=0;
int *b=new int[n];
for(i=0;i<n;i++)
b[i]=a[i];
//(冒泡排序)
for (i = 0; i <n; i++)
{
if(b[i]!=i+1) //地址和值不等则搜索交换
{
count++;
for(j=i;j<n;j++)
{
if(b[j]==i+1)
{
b[j]=b[i];
break;
}
}
}
}
return count;}