Computer >> Máy Tính >  >> Lập trình >> C ++

Sắp xếp các số theo tổng các chữ số của chúng trong C ++

Trong phần này, chúng ta sẽ xem cách sắp xếp các số theo tổng các chữ số của chúng. Vì vậy, nếu một số có tổng các chữ số nhỏ hơn, thì số đó sẽ được đặt ở đầu tiên, sau đó số tiếp theo sẽ được đặt với tổng các chữ số lớn hơn.

data = {14, 129, 501, 23, 0, 145}

sau khi phân loại, chúng sẽ -

data = {0, 14, 23, 501, 145, 129}

Ở đây chúng ta sẽ tạo logic so sánh của riêng mình để sắp xếp chúng. Logic so sánh đó sẽ được sử dụng trong hàm sắp xếp trong C ++ STL.

Thuật toán

compare(num1, num2):
Begin
   if sum of digits of num1 < sum of digits of num2, then
      return 1
   return 0
End

Ví dụ

#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] << " ";
   }
}

Đầu ra

0 14 23 501 145 129