Skip to content

Instantly share code, notes, and snippets.

@untainsYD
Created May 22, 2025 06:48
Show Gist options
  • Select an option

  • Save untainsYD/3d0966c133ec248ea61877eada723f5f to your computer and use it in GitHub Desktop.

Select an option

Save untainsYD/3d0966c133ec248ea61877eada723f5f to your computer and use it in GitHub Desktop.
Laboratory 5, Task 2
package lab5.sorting;
import java.util.Comparator;
/**
* Компаратор для сортування цілих чисел за збільшенням суми їх цифр.
* Якщо суми цифр однакові, сортування здійснюється за значенням самого числа.
*/
public class DigitSumComparator implements Comparator<Integer> {
/**
* Обчислює суму цифр числа
* @param number число для обчислення суми цифр
* @return сума цифр числа
*/
public static int calculateDigitSum(int number) {
int sum = 0;
int n = Math.abs(number); // Використовуємо абсолютне значення для від'ємних чисел
while (n > 0) {
sum += n % 10;
n /= 10;
}
return sum;
}
/**
* Порівнює два числа за сумою їх цифр (за збільшенням)
* @param num1 перше число
* @param num2 друге число
* @return негативне значення, якщо num1 < num2; позитивне, якщо num1 > num2; 0, якщо рівні
*/
@Override
public int compare(Integer num1, Integer num2) {
int sum1 = calculateDigitSum(num1);
int sum2 = calculateDigitSum(num2);
// Спочатку порівнюємо за сумою цифр
int result = Integer.compare(sum1, sum2);
// Якщо суми цифр однакові, порівнюємо за значенням числа
if (result == 0) {
result = Integer.compare(num1, num2);
}
return result;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment