快速排序之后从前向后数一遍。
我的代码如下:
#include<stdio.h>
#define MAXN 200088
void qsort(long a[],long begin,long end)
{
long i=begin,j=end,mid=a[(begin+end)/2],t;
do{
while(a[i]<mid) i++;
while(a[j]>mid) j--;
if(i<=j)
{
t=a[i];a[i]=a[j];a[j]=t;
i++;j--;
}
}while(i<=j);
if(i<end) qsort(a,i,end);
if(j>begin) qsort(a,begin,j);
}
int main()
{
long n,i,a[MAXN],tmp,count;
scanf("%ld",&n);
for(i=1;i<=n;i++)
scanf("%ld",&a[i]);
qsort(a,1,n);
for(i=1;i<=n;i++)
{
tmp=a[i];
count=1;
while(a[i+1]==tmp)
{
i++;
count++;
}
printf("%ld %ld\n",tmp,count);
}
return 0;
}
posted on 2010-01-06 20:13
lee1r 阅读(152)
评论(0) 编辑 收藏 引用 所属分类:
题目分类:基础/模拟