绝对值排序
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;
}