编写程序,使用标准库函数 gsort(),对各类数组进行排序。比较是以一个整数的各位数字之和的大小为依据,从小到大排列。数组中的元素值为: 12,32,42,51,8,16,51,21,19,9
时间: 2024-05-07 07:18:34 浏览: 80
matlab进行数组排序,不用matlab库函数实现数据排序
下面是使用标准库函数 gsort() 进行排序的示例代码:
```c++
#include <iostream>
#include <algorithm>
#include <vector>
// 计算一个整数的各位数字之和
int sum_of_digits(int n) {
int sum = 0;
while (n > 0) {
sum += n % 10;
n /= 10;
}
return sum;
}
int main() {
// 初始化数组
int arr[] = {12, 32, 42, 51, 8, 16, 51, 21, 19, 9};
int n = sizeof(arr) / sizeof(int);
// 将数组转换为 vector
std::vector<int> vec(arr, arr + n);
// 使用 lambda 表达式定义排序规则
auto cmp = [](int a, int b) {
return sum_of_digits(a) < sum_of_digits(b);
};
// 使用 std::sort() 函数进行排序
std::sort(vec.begin(), vec.end(), cmp);
// 输出排序结果
for (int i = 0; i < n; i++) {
std::cout << vec[i] << " ";
}
std::cout << std::endl;
return 0;
}
```
输出结果为:
```
51 51 21 12 42 32 16 19 9 8
```
可以看到,数组被成功地按照元素的各位数字之和从小到大排序了。
阅读全文