10165101134 edited 7 年,7 月前
using namespace std;
long long a[10001];//待排序整数最大为10^18,故使用long long;
int comp(long long a,long long b);//比较函数
int main()
{
int t,k;
int n,i;
scanf("%d",&t);
for (k=0;k<t;k++)
{
scanf("%d",&n);
for (i=0;i<n;i++)
{
scanf("%lld",&a[i]);
}
sort(a,a+n,comp);//排序
printf("case #%d:\n",k);
for (i=0;i<n-1;i++)
{
printf("%lld ",a[i]);
}
printf("%lld\n",a[n-1]);
}
}
int comp(long long a,long long b)
{
long long i,j;
i=a;
j=b;
while (i/10) i/=10;
while (j/10) j/=10;//分别取最高位
if (i<0) i=-i;
if (j<0) j=-j;//排序和正负无关,所以取绝对值
if (i==j) return a<b;//题目中说如果最高位相同,则按数值从小到大排序
else return i>j;//如果最高位不同,则按最高位排序
}
c++ stl的sort应用
using namespace std;
long long a[10001];
int comp(long long a,long long b);
int main()
{
int t,k;
int n,i;
scanf(“%d”,&t);
for (k=0;k<t;k++)
{
scanf(“%d”,&n);
for (i=0;i<n;i++)
{
scanf(“%lld”,&a[i]);
}
sort(a,a+n,comp);
printf(“case #%d:\n”,k);
for (i=0;i<n-1;i++)
{
printf(“%lld “,a[i]);
}
printf(“%lld\n”,a[n-1]);
}
}
int comp(long long a,long long b)
{
long long i,j;
i=a;
j=b;
while (i/10) i/=10;
while (j/10) j/=10;
if (i<0) i=-i;
if (j<0) j=-j;
if (i==j) return aj;
}
using namespace std;
long long a[10001];
int comp(long long a,long long b);
int main()
{
int t,k;
int n,i;
scanf(“%d”,&t);
for (k=0;k<t;k++)
{
scanf(“%d”,&n);
for (i=0;i<n;i++)
{
scanf(“%lld”,&a[i]);
}
sort(a,a+n,comp);
printf(“case #%d:\n”,k);
for (i=0;i<n-1;i++)
{
printf(“%lld “,a[i]);
}
printf(“%lld\n”,a[n-1]);
}
}
int comp(long long a,long long b)
{
long long i,j;
i=a;
j=b;
while (i/10) i/=10;
while (j/10) j/=10;
if (i<0) i=-i;
if (j<0) j=-j;
if (i==j) return aj;
}