Radix Sort-un Java proqramlaşdırma dilində implementasiyası
import java.util.ArrayList;
import java.util.List;
public class RadixSort {
// Ədədin müəyyən mövqedəki rəqəmini qaytarır
public static int getDigit(int num, int place) {
return (int)(Math.abs(num) / Math.pow(10, place)) % 10;
}
// Ədədin neçə rəqəmdən ibarət olduğunu tapır
public static int digitCount(int num) {
if (num == 0) return 1;
return (int)Math.floor(Math.log10(Math.abs(num))) + 1;
}
// Massivdə ən çox rəqəmə sahib ədədin rəqəm sayını tapır
public static int mostDigits(int[] nums) {
int maxDigits = 0;
for (int num : nums) {
maxDigits = Math.max(maxDigits, digitCount(num));
}
return maxDigits;
}
// Radix Sort-un əsas funksiyası
public static int[] radixSort(int[] nums) {
int maxDigitCount = mostDigits(nums);
for (int k = 0; k < maxDigitCount; k++) {
List<List<Integer>> digitBuckets = new ArrayList<>();
// 0-dan 9-a qədər 10 bucket (siyahı) yaradılır
for (int i = 0; i < 10; i++) {
digitBuckets.add(new ArrayList<>());
}
// Ədədlər müvafiq bucket-lərə yerləşdirilir
for (int num : nums) {
int digit = getDigit(num, k);
digitBuckets.get(digit).add(num);
}
// Bütün bucket-lər birləşdirilərək yeni massiv yaradılır
int index = 0;
for (List<Integer> bucket : digitBuckets) {
for (int num : bucket) {
nums[index++] = num;
}
}
}
return nums;
}
// Test məqsədli əsas metod
public static void main(String[] args) {
int[] data = {170, 45, 75, 90, 802, 24, 2, 66};
int[] sorted = radixSort(data);
for (int num : sorted) {
System.out.print(num + " ");
}
}
}
Nəticə:
2 24 45 66 75 90 170 802