java常见排序算法——基数排序(附代码示列)

2025年01月13日 建站教程

public  void radixSort(int[] nums){
  int min = Integer.MAX_VALUE;
  int max = Integer.MIN_VALUE;
  for (int num : nums) {
    min = Math.min(min, num);
    max = Math.max(max, num);
  }
  for (int i = 0; i < nums.length; i++) {
    nums[i] -= min;
  }
  max -= min;
  int maxLen = (max+"").length();

  int[][] bucket = new int[nums.length][10];
  int[] bucketCount = new int[10];
 
  for (int i = 0, n = 1; i < maxLen; i++, n*=10) {
    for (int num : nums) {
      int digitVal = num / n % 10;
      bucket[bucketCount[digitVal]][digitVal] = num;
      bucketCount[digitVal]++;
    }
    int index = 0;
    for (int j = 0; j < bucketCount.length; j++) {
      if(bucketCount[j] > 0){
        for (int k = 0; k < bucketCount[j]; k++) {
          nums[index] = bucket[k][j];
          index++;
        }
      }
      bucketCount[j] = 0;
    }
  }
  for (int i = 0; i < nums.length; i++) {
    nums[i] += min;
  }
}

PS:按个、十、百位依次归类排序。

本文链接:http://so.lmcjl.com/news/21249/

展开阅读全文
相关内容