Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

เรียงลำดับตัวเลขตามผลรวมของหลักใน C++


ในส่วนนี้เราจะดูวิธีเรียงตัวเลขตามผลรวมของหลัก ตัวเลขที่มีผลรวมน้อยกว่าจะอยู่หน้า ตัวที่มีผลรวมมากกว่าจะอยู่หลัง

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

หลังเรียงจะได้ −

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

เราจะสร้าง logic การเปรียบเทียบเองเพื่อใช้ในฟังก์ชัน sort ของ C++ STL

อัลกอริทึม

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