#include<stdlib.h>
int compare(const void*a,const void*b)
{
int *x=(int*)a;
int *y=(int*)b;
return *y-*x;//降序
}
int main()
{
int n,arr[20],a[20],b[20],c[1000000];//第一个数,排序好的
int i=0,digit=0;//总位数
scanf("%d",&n);
while(n--){
scanf("%d",&arr[i++]);
}
for(int j=0;j<=i;j++)
{
a[j]=arr[j];//arr[]原封不动
while(a[j]){
a[j]/=10;
digit++;
}
b[j]=a[j];
}
//排序函数,b[j],开头
int m=sizeof(a)/sizeof(a[0]);
qsort(b,m,sizeof(int),compare);
按第一个数字排序〤
怎么靠排序好的b[j]把a[i]输出来?
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int compare(const void *a, const void *b)
{
char str1[40], str2[40]; // 1:a在前,b在后
sprintf(str1, "%d%d", *(int *)a, *(int *)b); // 2:b前a后
sprintf(str2, "%d%d", *(int *)b, *(int *)a);
return strcmp(str2, str1);
}
int main()
{
int n, arr[20];
int count = 0; // 数字个数
scanf("%d", &n);
for (int i = 0; i < n; i++)
scanf("%d", &arr[count++]);
qsort(arr, count, sizeof(int), compare);
for (int i = 0; i < count; i++)
printf("%d", arr[i]);
printf("\n");
◮: