1067. Sort with Swap(0,*) (25)

来源:互联网 发布:淘宝服装店铺简介范文 编辑:程序博客网 时间:2024/06/16 06:55
#include<cstdio>#include<algorithm>using namespace std;const int maxn = 100010;int pos[maxn];int main(){  int n,ans=0;  scanf("%d",&n);  int left = n-1,num;  for(int i=0; i<n; i++)  {    scanf("%d",&num);    pos[num] = i;    if(num == i && num!=0)      left--;  }  int k = 1;  while(left>0)  {    if(pos[0]==0)    {      while(k < n)      {        if(pos[k] != k)        {          swap(pos[0],pos[k]);          ans++;          break;        }        k++;      }    }    while(pos[0] != 0)    {      swap(pos[0],pos[pos[0]]);      ans++;      left--;    }  }  printf("%d\n",ans);  return 0;}

0 0
原创粉丝点击