绝对值排序
这道题目很适合用冒泡排序来解决。
Post Code:
#include <iostream>
#include <cmath>
using namespace std;
int main(){
int n;
int a[101];
while(scanf("%d",&n)&&n!=0){
for(int i=0;i<n;i++){
scanf("%d",&a[i]);
}
//用的是冒泡排序法,每次把绝对值最大的那个数往最右移,然后输出最右的那个数。
//swap是库函数,用来交换两个变量的值,也可以自己来写这个函数。
for(int j=n-1;j>=0;j--){//两个for循环就是冒泡排序的过程。
for(int k=0;k<j;k++){//j用来表示每一次冒泡排序时循环的最大次数。j初始值为n-1,因为数组下标是从0开始的。
if(abs(a[k])>abs(a[k+1]))
swap(a[k],a[k+1]);
}
printf(j==0?"%d\n":"%d ",a[k]);//k==j时跳出内层的for循环,此时a[k]就是最后一个数,直接输出。进入下一个外层for循环。
}
}
return 0;
}