Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C++

Sắp xếp số theo tổng chữ số trong C++

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