心如止水
Je n'ai pas le temps
posts - 400,comments - 130,trackbacks - 0

快速排序之后从前向后数一遍。

我的代码如下:

#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)  编辑 收藏 引用 所属分类: 题目分类:基础/模拟

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理