绝对值排序

来源:互联网 发布:sql查询分析器在破解 编辑:程序博客网 时间:2024/06/06 17:23

Description

输入n(n<=100)个整数,按照绝对值从大到小排序后输出。题目保证对于每一个测试实例,所有的数的绝对值都不相等。

Input

输入数据有多组,每组占一行,每行的第一个数字为n,接着是n个整数,n=0表示输入数据的结束,不做处理。

Output

对于每个测试实例,输出排序后的结果,两个数之间用一个空格隔开。每个测试实例占一行

Sample Input

3 3 -4 2
4 0 1 2 -3 0

Sample Output

-4 3
2 -3 2 1 0

绝对值转换

int 型abs(int x);long 型labs(int x);浮点数 float doublefabs(double x);
#include<stdio.h>  #include<math.h>  #define N 101void quick_sort(int s[], int l, int r){    int i, j, x;    if (l < r)    {        i = l;        j = r;        x = s[i];        while (i < j)        {            while (i < j && abs(s[j]) > abs(x))                j--; /* 从右向左找第一个绝对值小于x的数 */            if (i < j)                s[i++] = s[j];            while (i < j && abs(s[i]) < abs(x))                i++; /* 从左向右找第一个绝对值大于x的数 */            if (i < j)                s[j--] = s[i];        }        s[i] = x;        quick_sort(s, l, i - 1); /* 递归调用 */        quick_sort(s, i + 1, r);    }}int main(){    int n, i, j, a[N], temp;    while (scanf_s("%d", &n) && n != 0)    {        for (i = 0;i<n;i++)            scanf_s("%d", &a[i]);        quick_sort(a, 0, n - 1);        for (i = n-1;i>0;i--)            printf("%d ", a[i]);        if (i == 0)            printf("%d\n", a[i]);        else            break;    }    return 0;}

总结:同样是快速排序,最后需要输出一个换行符,否则报PE


输出格式错误
原创粉丝点击