您的位置:首页 > 其它

HDU1031 Design T-Shirt (二级排序)

2014-05-04 16:05 411 查看
二级排序,快排

#include<stdio.h>
#include<string.h>
double a[10010];
int b[10010];
void quicksort(double a[],int low,int high)
{
int i=low;
int j=high;
double temp=a[i];
int temp2=b[i];
if(i<j)
{
while(i<j)
{
while(a[j]<=temp&&i<j) j--;
a[i]=a[j];
b[i]=b[j];
while(a[i]>=temp&&i<j) i++;
a[j]=a[i];
b[j]=b[i];
}
a[i]=temp;
b[i]=temp2;
quicksort(a,low,i-1);
quicksort(a,j+1,high);
}
else return;
}
void quicksort2(int b[],int low,int high)
{
int i=low;
int j=high;
int temp=b[i];
if(i<j)
{
while(i<j)
{
while(b[j]<=temp&&i<j) j--;
b[i]=b[j];
while(b[i]>=temp&&i<j) i++;
b[j]=b[i];
}
b[i]=temp;
quicksort2(b,low,i-1);
quicksort2(b,j+1,high);
}
else return;
}
int main()
{
int n,m,k;
double temp;
while(scanf("%d %d %d",&n,&m,&k)!=EOF)
{
memset(a,0,sizeof(a));
memset(b,0,sizeof(b));
for(int i=0;i<n;i++)
for(int j=0;j<m;j++)
{
scanf("%lf",&temp);
a[j]+=temp;
}
for(int i=0;i<m;i++)
b[i]=i+1;
quicksort(a,0,m-1);
quicksort2(b,0,k-1);
printf("%d",b[0]);
for(int i=1;i<k;i++)
printf(" %d",b[i]);
printf("\n");
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: