请问怎么在实现按绝对值从小到大的排序的同时输出原来的数字呢?
Samples
input
5
4 6 -2 1 0
output
0 1 -2 4 6
我写的运行结果是这样的:
Samples
input
5
4 6 -2 1 0
output
0 1 2 4 6
#include"stdio.h"
#include"stdlib.h"
#include"math.h"
int compare(const void* a,const void* b)
{
int* pa = (int*)a;
int* pb = (int*)b;
int num1 = *pa;
int num2 = *pb;
return num1 - num2;
}
int main(void)
{
int n,i;
while(scanf("%d",&n) != EOF)
{
int date[n];
for(i = 0;i < n;i++)
{
scanf("%d",&date[i]);
date[i] = fabs(date[i]);
}
qsort(date,n,sizeof(int),compare);
for(i = 0;i < n;i++)
{
printf("%d ",date[i]);
}
printf("\n");
}
return 0;
}
#include"stdio.h"
#include"stdlib.h"
#include"math.h"
int compare(const void* a,const void* b)
{
int* pa = (int*)a;
int* pb = (int*)b;
int num1 = *pa;
int num2 = *pb;
return abs(num1) - abs(num2);
}
int main(void)
{
int n,i;
while(scanf("%d",&n) != EOF)
{
int date[n];
for(i = 0;i < n;i++)
{
scanf("%d",&date[i]);
}
qsort(date,n,sizeof(int),compare);
for(i = 0;i < n;i++)
{
printf("%d ",date[i]);
}
printf("\n");
}
return 0;
}
#include"stdio.h"
#include"stdlib.h"
#include"math.h"
int compare(const void* a,const void* b)
{
int* pa = (int*)a;
int* pb = (int*)b;
int num1 = *pa;
int num2 = *pb;
return abs(num1) - abs(num2);
}
int main(void)
{
int n,i;
while(scanf("%d",&n) != EOF)
{
int date[n];
for(i = 0;i < n;i++)
{
scanf("%d",&date[i]);
}
qsort(date,n,sizeof(int),compare);
for(i = 0;i < n;i++)
{
printf("%d ",date[i]);
}
printf("\n");
}
return 0;
}