#include <iostream>
#include <stdio.h>
#include <algorithm>
#include <cstring>
#define For(i, j, n) for(int i = j ; i <= n ; ++i)
using namespace std;
const int N = 10005;
int n, a[N];
int get_pivot(int q[], int l, int r)
{
int mid = l + r >> 1;
if(q[r] > q[mid]) swap(q[r], q[mid]); // r <= mid
if(q[l] < q[r]) swap(q[l], q[r]); // l >= r
if(q[l] > q[mid]) swap(q[l], q[mid]); // l <= mid
swap(q[l], q[r]); // 中位数在r
return q[r];
}
int ans;
inline void quick_sort(int a[],int l,int r)
{
if(l==r) return ;
int x=a[l+r>>1],i=l-1,j=r+1;
while(i<j)
{
do i++;while(a[i]<x);
do j--;while(a[j]>x);
if(i<j)
{
ans++;
swap(a[i], a[j]);
}
}
quick_sort(a,l,j);quick_sort(a,j+1,r);
}
int main()
{
scanf("%d", &n);
for(int i = 1; i <= n; i++)
scanf("%d", &a[i]);
quick_sort(a, 1, n);
printf("%d\n", ans);
return 0;
}
如上,一边快排一边记录交换次数,请问为啥只能得10分