排个序再比较(注意:要用新数组存原来的),代码:
这里我用的是冒泡排序,也可以用快排,桶排,但冒泡会快点
#include<bits/stdc++.h>
using namespace std;
const int maxn=1e6+100;
int a[maxn],b[maxn];
void bubble_sort(int a[],int n){
for(int i=1;i<n;i++){
bool flag=true;
for(int j=1;j<=n-i;j++){
if(a[j]>a[j+1]){
swap(a[j],a[j+1]);
flag=false;
}
}
if(flag) break;
}
}
int main(){
int n,cnt=0;
cin>>n;
for(int i=1;i<=n;i++) cin>>a[i],b[i]=a[i];
bubble_sort(a,n);
for(int i=1;i<=n;i++){
if(a[i]!=b[i]){
cnt++;
}
}
cout<<cnt;
return 0;
}