【排序算法大合集】

来源:互联网 发布:软件基础架构平台 编辑:程序博客网 时间:2024/06/03 23:38

一、归并排序

#include<iostream>#include<cstdio>#include<cstring>#include<vector>#include<algorithm>using namespace std;typedef long long  LL;const int N=110000;int a[N],b[N],n;LL ans;void gsort(int l,int r){    if(l>=r)return;    int mid=(l+r)/2;    gsort(l,mid);    gsort(mid+1,r);    int i=l,j=mid+1,ll=0;    while(i<=mid&&j<=r)    {        if(a[i]<=a[j])        {            b[++ll]=a[i];            i++;        }        else        {            ans+=(LL)(mid-i+1);            b[++ll]=a[j];            j++;        }    }    while(i<=mid)b[++ll]=a[i++];    while(j<=r)b[++ll]=a[j++];    for(i=1,j=l;i<=ll;i++,j++)        a[j]=b[i];}int main(){    while(scanf("%d",&n)!=EOF)    {            ans=0;        for(int i=1;i<=n;i++)        {            scanf("%d",&a[i]);        }        gsort(1,n);        printf("%lld\n",ans);    }    return 0;}


原创粉丝点击