📅  最后修改于: 2023-12-03 14:39:55.404000             🧑  作者: Mango
在 C++ 中,可以使用 std::sort
算法对数字数组进行排序。但是,如果想按照某个特定的规则进行排序,就需要使用自定义排序函数。本篇文章将介绍如何使用自定义排序函数按照数字的幅度绝对值大小进行排序。
实现该功能的核心就是定义一个自定义的排序函数。在该函数中,先计算出每个数字的幅度绝对值大小,然后再比较大小即可。具体实现方式如下:
bool cmp(int a, int b) {
return abs(a) < abs(b);
}
以上代码定义了一个名为 cmp
的函数,该函数接受两个整数参数 a
和 b
,并返回 bool
类型的值。在函数中,使用 abs
函数计算 a
和 b
的幅度绝对值大小,然后比较大小并返回结果。
使用该自定义函数可以实现按幅度绝对值对数字进行排序的功能。
下面是一个完整的 C++ 程序,演示了如何使用自定义排序函数按幅度绝对值对数字进行排序:
#include <iostream>
#include <algorithm>
#include <vector>
#include <cmath>
using namespace std;
bool cmp(int a, int b) {
return abs(a) < abs(b);
}
int main() {
vector<int> arr {-4, 6, 2, -8, 5};
sort(arr.begin(), arr.end(), cmp);
for (int i = 0; i < arr.size(); i++) {
cout << arr[i] << " ";
}
cout << endl;
return 0;
}
该程序首先定义了一个名为 arr
的向量,其中包含了五个整数。然后使用 sort
算法对该向量进行排序,排序时使用了自定义函数 cmp
。最后,使用循环打印出排好序的向量中的元素。
输出结果如下:
2 -4 5 6 -8
从输出结果中可以看到,程序成功地按照幅度绝对值大小对数字进行了排序。
在 C++ 中,我们可以使用自定义函数来实现按照特定规则对数组进行排序的功能。本篇文章介绍了如何使用自定义排序函数按幅度绝对值对数字进行排序。看完本篇文章后,读者可以更加熟练地使用 sort
算法和自定义函数来实现各种有趣的排序功能。