基数排序法处理有负数问题方法

基数排序存在问题对于包含负数和0的数据无法进行排序,本文主要解决方法如下:

  1. 将所有的数加一个正数,使得所有的数变为正数进行基数排序;
  2. 排序完之后在减点加的正数值输出。
    注意:这里的正数是指大于最小值的绝对值的数,下面程序中缺少找最小值的过程自己有需要的自己加
(亲测有效)
package RedixSort; import java.util.Arrays; public class redixSort { public static void main(String[] args) { // TODO 自动生成的方法存根 int arr[] = {-4, 53, 3, 542,-6, 748, 14, 214 }; for(int i=0; i max) { max = arr[i]; } } int maxlength = (max + "").length(); for (int i = 1, n = 1; i <= maxlength; i++, n *= 10) { for (int j = 0; j < arr.length; j++) { int a = arr[j] / n % 10; bucket[a][element[a]] = arr[j]; element[a]++; } int index = 0; for (int k = 0; k < element.length; k++) { if (element[k] != 0) { for (int l = 0; l < element[k]; l++) { arr[index] = bucket[k][l]; index++; } } element[k]=0; }} } }

    推荐阅读