- 首页 > it技术 > >
基数排序存在问题对于包含负数和0的数据无法进行排序,本文主要解决方法如下:
- 将所有的数加一个正数,使得所有的数变为正数进行基数排序;
- 排序完之后在减点加的正数值输出。
注意:这里的正数是指大于最小值的绝对值的数,下面程序中缺少找最小值的过程自己有需要的自己加
(亲测有效)
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;
}} }
}
推荐阅读