思路:
设置一个结构体,有一个数据项用来存绝对值,然后用sort的cmp函数对绝对值排序。
代码:
// 03.15 07:40
#include <cstdio>
#include <math.h>
#include <algorithm>
using namespace std;
const int maxn = 101;
struct Node {
int data;
int A;
}a[maxn];
bool cmp(Node a, Node b) {
return a.A > b.A;
}
int main() {
int n;
while (scanf("%d", &n) != EOF && n != 0) {
for (int i = 0; i < n; i++) {
scanf("%d", &a[i].data);
if (a[i].data < 0)
a[i].A = -a[i].data;
else
a[i].A = a[i].data;
}
sort(a, a + n, cmp);
for (int i = 0; i < n; i++) {
printf("%d", a[i].data);
if (i != n - 1)
printf(" ");
}
printf("\n");
}
return 0;
}