基數排序的 Java 程式


基數排序是一種根據每個元素(或數字)中的每一位進行排序的排序技術。根據個位數(也稱為最低有效數字)和十位數(也稱為最高有效數字)、百位數等對元素進行排序。

例如

下面是 Java 中基數排序的一個示例 −

 即時演示

import java.util.*;
public class my_radix_sorting {
   static int get_max_val(int my_arr[], int arr_len) {
      int max_val = my_arr[0];
      for (int i = 1; i < arr_len; i++)
         if (my_arr[i] > max_val)
         max_val = my_arr[i];
      return max_val;
   }
   static void countSort(int my_arr[], int arr_len, int exp) {
      int result[] = new int[arr_len];
      int i;
      int count[] = new int[10];
      Arrays.fill(count,0);
      for (i = 0; i < arr_len; i++)
         count[ (my_arr[i]/exp)%10 ]++;
      for (i = 1; i < 10; i++)
         count[i] += count[i - 1];
      for (i = arr_len - 1; i >= 0; i--) {
         result[count[ (my_arr[i]/exp)%10 ] - 1] = my_arr[i];
         count[ (my_arr[i]/exp)%10 ]--;
      }
      for (i = 0; i < arr_len; i++)
         my_arr[i] = result[i];
   }
   static void radix_sort(int my_arr[], int arr_len) {
      int m = get_max_val(my_arr, arr_len);
      for (int exp = 1; m/exp > 0; exp *= 10)
      countSort(my_arr, arr_len, exp);
   }
   public static void main (String[] args) {
      int my_arr[] = {56, 78, 102, 345, 67, 90, 102, 45, 78};
      int arr_len = my_arr.length;
      System.out.println("The array after performing radix sort is ");
      radix_sort(my_arr, arr_len);
      for (int i=0; i<arr_len; i++)
      System.out.print(my_arr[i]+" ");
   }
}

輸出

The array after performing radix sort is
45 56 67 78 78 90 102 102 345

說明

在基數排序中,每個元素都根據其數字進行排序,其中每個元素中的最低有效數字首先被排序,最高有效數字最後被排序。它使用計數排序作為子函式來執行其排序功能。

給定一個元素陣列,第一步是根據最低有效位,即個位,對元素進行排序。接下來,根據十位數對陣列中的元素進行排序。然後,根據百位數對元素進行排序,依此類推。這是在“get_max_val”函式的幫助下完成的。在 main 函式中,定義了陣列,並將該陣列作為引數傳遞給“radix_sort”函式。

更新於: 14-Sep-2020

358 次瀏覽

啟動你的職業生涯

完成課程獲得認證

開始
廣告