神犇营-my1041-绝对值排序

【小韦同学@神犇营-my1041-绝对值排序】

题目:

描述

给出n个数,有正有负,请按照它们的绝对值从小到大进行排序(绝对值一样的保持原有前后顺序)。
比如:
输入:
3
5 2 -5
输出:
2 5 -5

输入

第一行为一个正整数n(1<=n<=20000)
第二行n个整数,绝对值范围(0~1000000)

输出

输出排好序的n个数(每行8个数,最后一行可以不够8个数,行末不能有空格)

输入样例1

18
5 4 2 1 3 9 8 7 6 10 11 -18 -16 -17 13 14 12 15

输出样例1

1 2 3 4 5 6 7 8
9 10 11 12 13 14 15 -16
-17 -18

题解:

/********************************************************************* 

* 题目:神犇营-my1041-绝对值排序 
* 作者:小韦同学 
* 邮箱:weichangying_wcy@163.com 

* 题解:
	思路:
	可以用冒泡排序,只是在比较元素的时候是用绝对值比较。
	注意: 
	1°输出要8个元素一行,并且行末不能有多余的空格。
	2°注意是稳定排序。 

*********************************************************************/ 

#include <bits/stdc++.h>
using namespace std;

int main() {
	
	int n;
	cin >> n;
	int num[n];
	for (int i = 0; i < n; i++) {
		cin >> num[i];
	}
    for (int i = 0; i < n - 1; i++) {
		bool swapped = false;
		for (int j = 0; j < n - i - 1; j++) {
			if (abs(num[j]) > abs(num[j + 1])) {
				swap(num[j], num[j + 1]);
				swapped = true;
			}
		}
		if (swapped == false) {
			break;
		}
	}
	for (int i = 0; i < n; i++) {
		cout << num[i];
		if ((i + 1) % 8 != 0) cout << " ";
		else cout << endl;
	}
	
	return 0;
}

我是小韦同学,企者不立,跨者不行,每天进步一点点。
欢迎大家多多交流,如果发现有错误,请多指正。有疑问的同学也可以留言评论或者发邮件。
邮箱:weichangying_wcy@163.com

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值