和老师做项目,我实在觉得自己算法基础太差,所以没办法只能将算法和数据结构从头来过,打牢基础,笨人就得扎实一点啊,从最简单的开始哈~主要是想用写博文的方式坚持下去,如果小伙伴有更好的方法或意见,要教我哟~
C:
#include<stdio.h>
int L[250003],R[250003];
long long int count;
void MERGE(int A[],int p,int q,int r)
{
int i,j,m,n,k;
n=q-p+1;
m=r-q;
for(i=0;i<n;i++)
L[i]=A[p+i];
for(i=0;i<m;i++)
R[i]=A[q+i+1];
L[n]=0x7fffffff;
R[m]=0x7fffffff;
i=0;
j=0;
for(k=p;k<=r;k++)
{
if(L[i]<=R[j])
{
A[k]=L[i];
i++;
}
else
{
A[k]=R[j];
j++;
count+=n-i;
}
}
return;
}
void MERGE_SORT(int A[],int p,int r)
{
int q;
if(p<r)
{
q=(p+r)/2;
MERGE_SORT(A,p,q);
MERGE_SORT(A,q+1,r);
MERGE(A,p,q,r);
}
return;
}
int main()
{
int n,i;
int a[500000];
while(scanf("%d",&n)&&n)
{
count=0;
for(i=0;i<n;i++)
scanf("%d",&a[i]);
MERGE_SORT(a,0,n-1);
printf("%lld\n",count);
}
return 0;
}
最后,麻烦大家一件事,能帮忙把它转成java语言给我看吗?谢谢~