在本节中,我们将看到如何根据数字的总和对数字进行排序。因此,如果一个数字的位数之和较小,则将其放在第一位,然后将以较大的数字之和放置下一个数字。
data = {14, 129, 501, 23, 0, 145}排序后,它们将是-
data = {0, 14, 23, 501, 145, 129}在这里,我们将创建自己的比较逻辑来对它们进行排序。该比较逻辑将在C ++ STL的sort函数中使用。
compare(num1, num2): Begin if sum of digits of num1 < sum of digits of num2, then return 1 return 0 End
#include<iostream>
#include<algorithm>
using namespace std;
int sumOfDigits(int n){
int sum = 0;
while(n){
sum += n%10;
n /= 10;
}
return sum;
}
int compare(int num1, int num2){
if(sumOfDigits(num1) < sumOfDigits(num2))
return 1;
return 0;
}
main(){
int data[] = {14, 129, 501, 23, 0, 145};
int n = sizeof(data)/sizeof(data[0]);
sort(data, data + n, compare);
for(int i = 0; i<n; i++){
cout << data[i] << " ";
}
}输出结果
0 14 23 501 145 129