Məzmuna keçin
  • Radix Sort alqoritmi

    Alqoritmlər radix sort alqoritm
    2
    0 Səslər
    2 Yazı
    60 Baxış
    codexC
    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