题目:绝对值排序
给定一个整数序列,要求按照绝对值从大到小的顺序进行排序并输出。
输入格式:
- 第一行包含一个整数
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,表示程序正常结束。
总结
- 输入:读取一个整数
n
以及n
个整数。 - 排序:根据整数的绝对值对这些整数进行降序排序。
- 输出:输出排序后的结果,以空格分隔。
注意
- 数组索引从 1 开始,可能会导致与 C++ 常规习惯不同,通常数组索引是从 0 开始的。在此代码中,为了适应题目需求,使用了 1-based indexing。