輸入 n (≤100) 及 n 個整數,按**絕對值從大到小**輸出,絕對值相同按原序(穩定排序)。多組測試直到 EOF。
#include <stdio.h>
#include <stdlib.h>
int main() {
int n, a[101];
while (scanf("%d", &n) == 1 && n) {
for (int i = 0; i < n; i++) scanf("%d", &a[i]);
// 穩定排序:插入排序或冒泡(只交換嚴格大於)
for (int i = 1; i < n; i++) {
int key = a[i], j = i - 1;
while (j >= 0 && abs(a[j]) < abs(key)) { // 絕對值大者前移
a[j + 1] = a[j];
j--;
}
a[j + 1] = key;
}
for (int i = 0; i < n; i++) {
if (i) printf(" ");
printf("%d", a[i]);
}
printf("\n");
}
return 0;
}