首页 > 编程语言 > 详细

基数排序

时间:2020-08-02 23:53:26      阅读:101      评论:0      收藏:0      [点我收藏+]
import java.util.Arrays;

public class My {
    public void radixSort(int[] arr) {
        int max = arr[0];   //初始化最大值
        for (int a : arr) {
            if (a > max) {
                max = a;
            }
        }
        int count = 1;      //初始化最大值的位数
        while (max / 10 > 0) {
            //int r=max%10;  //余数
            max = max / 10;
            count++;
        }

        for (int i = 0; i < count; i++) {
            int div = 1;  //用来取整的被除数
            for (int j = i; j > 0; j--) {
                div *= 10;
            }
            int[] temp = new int[arr.length];
            int[] buckets = new int[10];
            for (int a : arr) {
                int p = a / div % 10;
                buckets[p]++;
            }
            for (int j = 1; j < 10; j++) {
                buckets[j] += buckets[j - 1];
            }
            for (int j = arr.length - 1; j >= 0; j--) {
                int p = arr[j] / div % 10;
                temp[buckets[p] - 1] = arr[j];
                buckets[p]--;
            }
            //System.arraycopy(temp, 0, arr, 0, arr.length);
            for (int j = 0; j < arr.length; j++) {
                arr[j] = temp[j];
            }
        }
    }

    public static void main(String[] args) {
        My my = new My();
        int[] arr = {5, 6, 1, 2, 4, 7, 2, 3, 4, 6, 4};
        my.radixSort(arr);
        System.out.println(Arrays.toString(arr));
    }
}

 

基数排序

原文:https://www.cnblogs.com/zzyf/p/13423715.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!