按照各个数位之和排序
时间: 2024-10-21 07:04:39 浏览: 21
为了按照各个数位之和对一组整数进行排序,我们可以使用自定义比较函数,这个函数会对每个数字的每一位求和,然后根据这些和来进行排序。在 C++ 中,你可以这样做:
```cpp
#include <iostream>
#include <vector>
#include <algorithm>
// 自定义比较函数,计算并返回两个整数按位和后的大小关系
bool compareByDigitSum(int a, int b) {
int sumA = 0, sumB = 0;
while (a || b) {
sumA += a % 10; // 取 a 的当前位
sumB += b % 10; // 取 b 的当前位
a /= 10; // 清除 a 的最低位
b /= 10; // 清除 b 的最低位
}
return sumA < sumB;
}
int main() {
std::vector<int> numbers = {123, 456, 789, 100, 200, 300};
std::sort(numbers.begin(), numbers.end(), compareByDigitSum);
for (const auto& num : numbers) {
std::cout << num << " ";
}
std::cout << "\n";
return 0;
}
```
这段代码首先定义了一个 `compareByDigitSum` 函数,它接收两个整数,分别对他们逐位相加。然后,我们用这个函数作为 `std::sort` 函数的第三个参数,这会使整个向量中的元素按照我们的自定义规则排序。
运行这段程序后,你会看到输出的整数列表是按它们各个数位之和从小到大排序的。
阅读全文