Sắp xếp các số theo tổng chữ số tăng dần. Số có tổng chữ số nhỏ hơn sẽ đứng trước.
data = {14, 129, 501, 23, 0, 145}
Sau sắp xếp: {0, 14, 23, 501, 145, 129}
Tạo hàm so sánh tùy chỉnh dùng trong std::sort của C++ STL.
Thuật toán
compare(num1, num2):
Bắt đầu
nếu tổng chữ số num1 < tổng chữ số num2, thì
trả về 1
trả về 0
Kết thúc
Ví dụ mã C++
#include<iostream>
#include<algorithm>
using namespace std;
int tongChuSo(int n){
int sum = 0;
while(n){
sum += n%10;
n /= 10;
}
return sum;
}
int compare(int num1, int num2){
if(tongChuSo(num1) < tongChuSo(num2))
return 1;
return 0;
}
int 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] << " ";
}
}
Kết quả đầu ra
0 14 23 501 145 129