给你1 2 3 的混乱顺序问你最少几次能按升序排好
#include <iostream>
#include<stdio.h>using namespace std;
int main()
{
int n,a[1100],i,ge1=0,ge2=0,ge3=0,ge4=0,ge5=0,ge6=0,ge7=0,ge8=0,ge9=0,t,ge=0;
scanf("%d",&n);
for(i=0;i<=n-1;i++)
{
scanf("%d",&a[i]);
if(a[i]==1)
ge1++;
if(a[i]==2)
ge2++;
if(a[i]==3)
ge3++;
}
for(i=0;i<=ge1-1;i++)
{
if(a[i]==2)
ge4++;
if(a[i]==3)
ge5++;
}
for(i=ge1;i<=ge1+ge2-1;i++)
{
if(a[i]==1)
ge6++;
if(a[i]==3)
ge7++;
}
for(i=ge1+ge2;i<=n-1;i++)
{
if(a[i]==1)
ge8++;
if(a[i]==2)
ge9++;
}
if(ge4!=0&&ge6!=0)
{
t=ge4;
if(ge4>ge6)
t=ge6;
ge+=t;
}
if(ge5!=0&&ge8!=0)
{
t=ge5;
if(ge8<ge5)
t=ge8;
ge+=t;
}
if(ge7!=0&&ge9!=0)
{
t=ge7;
if(ge7>ge9)
t=ge9;
ge+=t;
}
ge+=(ge4+ge5+ge6+ge7+ge8+ge9-ge*2)/3*2;
printf("%d\n",ge);
return 0;
}