绝对值排序

题目:绝对值排序

给定一个整数序列,要求按照绝对值从大到小的顺序进行排序并输出。

输入格式:

  • 第一行包含一个整数 n (1 ≤ n ≤ 100),表示序列中的整数个数。
  • 第二行包含 n 个整数,表示序列中的元素。

输出格式:

  • 输出排序后的整数,按照绝对值从大到小的顺序,以空格分隔。

样例输入:

5 -3 2 1 -5 4

样例输出:

-5 4 -3 2 1

说明: 在上述样例中,绝对值排序后,按照顺序为 5, 4, 3, 2, 1,因此输出为 -5 4 -3 2 1

代码如下:

#include<bits/stdc++.h>
using namespace std;
int a[110],n;
bool cmp(int x,int y){
	return abs(x)>abs(y);
}
int main(){
	cin>>n;
	for(int i=1;i<=n;i++){
		cin>>a[i];
	}
	sort(a+1,a+1+n,cmp);
	for(int i=1;i<=n;i++){
		cout<<a[i]<<" ";
	}
    return 0;
}

这段代码的功能是读取一组整数,并根据它们的绝对值进行排序,然后输出排序后的结果。以下是逐行的解读:

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

  • 引入 C++ 标准库的头文件 bits/stdc++.h,该头文件包含了大多数常用的 C++ 库,以简化代码的书写。

int a[110], n;

  • 定义一个整数数组 a,大小为 110(用于存储输入的整数),并定义一个整数 n,用于表示输入的整数个数。

bool cmp(int x, int y) { return abs(x) > abs(y); }

  • 定义一个比较函数 cmp,用于比较两个整数 x 和 y 的绝对值。函数返回 true 当 x 的绝对值大于 y 的绝对值,从而实现绝对值降序排序。

int main() { cin >> n;

  • main 函数的开始,读取用户输入的整数个数 n

for (int i = 1; i <= n; i++) { cin >> a[i]; }

  • 循环从 1 到 n,逐个读取整数并存入数组 a。注意这里的索引从 1 开始。

sort(a + 1, a + 1 + n, cmp);

  • 使用 sort 函数对数组 a 从第 1 个元素到第 n 个元素进行排序,排序规则由 cmp 函数决定,即按照绝对值从大到小排序。

for (int i = 1; i <= n; i++) { cout << a[i] << " "; }

  • 再次循环从 1 到 n,输出排序后的数组元素,每个元素后跟一个空格。

return 0;

  • 返回 0,表示程序正常结束。

总结

  1. 输入:读取一个整数 n 以及 n 个整数。
  2. 排序:根据整数的绝对值对这些整数进行降序排序。
  3. 输出:输出排序后的结果,以空格分隔。

注意

  • 数组索引从 1 开始,可能会导致与 C++ 常规习惯不同,通常数组索引是从 0 开始的。在此代码中,为了适应题目需求,使用了 1-based indexing。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值