使用Java实现基数排序算法
作者:mmseoamin日期:2023-12-14

文章目录

    • 基数排序算法
    • 基数排序算法

      (1)基本思想:将整数按位数切割成不同的数字,然后按每个位数分别比较。

      (2)排序过程:将所有待比较数值(正整数)统一为同样的数位长度,数位较短的数前面补零。然后,从最低位开始,依次进行一次排序。这样从最低位排序一直到最高位排序完成以后,数列就变成一个有序序列。

      (3)代码示例:

      /**
       * 基数排序
       * @param number 待排序的数组
       * @param d 表示最大的数有多少位
       */
      public static void sort(int[] number, int d) 
      {
          int k = 0;
          int n = 1;
          int m = 1; //控制键值排序依据在哪一位
          int[][] temp = new int[10][number.length]; //数组的第一维表示可能的余数0-9
          int[] order = new int[10]; //数组order[i]用来表示该位是i的数的个数
          while (m <= d) {
              for (int i = 0; i < number.length; i++) {
                  int lsd = ((number[i] / n) % 10);
                  temp[lsd][order[lsd]] = number[i];
                  order[lsd]++;
              }
              for (int i = 0; i < 10; i++) {
                  if (order[i] != 0)
                      for (int j = 0; j < order[i]; j++) {
                          number[k] = temp[i][j];
                          k++;
                      }
                  order[i] = 0;
              }
              n *= 10;
              k = 0;
              m++;
          }
      }