绝对值排序
Description
输入n(n<=100)个整数,按照绝对值从大到小排序后输出。题目保证对于每一个测试实例,所有的数的绝对值都不相等。
#include<iostream> #include<cmath> using namespace std; int adjust(int s[], int l, int r) { int i = l, j = r; int x = s[l]; while(i < j){ while(i < j && fabs(s[j]) >= fabs(x) ) j--; if(i < j) { s[i] = s[j]; i++; } while(i < j && fabs(s[i]) < fabs(x) ) i++; if(i < j){ s[j] = s[i]; j--; } } s[i] = x; return i; } void qsort(int s[], int l, int r) { if(l < r){ int i = adjust(s, l, r); qsort(s, l, i-1); qsort(s, i+1, r); } } int main(){ int n; while(cin>>n && n!=0){ int s[100]; for(int i=0; i<n; i++) cin>>s[i]; qsort(s, 0, n-1); for(int i=n-1; i>=0; i--) i==n-1? cout<<s[i] : cout<<" "<<s[i]; cout<<endl; } return 0; }