您的位置:首页 > 其它

HDOJ2020 绝对值排序

2012-11-24 17:48 281 查看


绝对值排序

这道题目很适合用冒泡排序来解决。
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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: