HDOJ2020 绝对值排序

绝对值排序

这道题目很适合用冒泡排序来解决。
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;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值