蒜法笔记(Java)-基数排序

逻辑

        基数排序(radix sort)属于“ 分配式排序 ”(distribution sort),又称“ 桶子法 ”(bucket sort),是由 赫尔曼·何乐礼 提出的对 桶排序 的拓展。从 最低位 开始逐位进行排序,一直到最高位排序完成以后, 数列变为有序。

运行过程

        注:为了防止溢出,需要一个大小为 10*arr.length 的二维数组(负数为 19*arr.length )。

        简述从低位到高位 进行 桶排序 。

代码

import java.util.Arrays;

public class RadixSort {
    public static void main(String[] args) {
        int[] arr = { 53, 3, 542, 748, 14, 214 , 0, 100};
        radixSort(arr);
        System.out.println(Arrays.toString(arr));
    }

    public static void radixSort(int[] arr) {
        int max = arr[0];
        for (int i = 1; i < arr.length; i++) if (arr[i] > max) max = arr[i];
        int maxlength = (max + "").length();
        int count[] = new int[10];
        int[][] bucket = new int[10][arr.length];
        for(int i = 0, n = 1;i<maxlength;i++,n*=10){
            for(int j = 0;j<10;j++)count[j] = 0;
            for(int j = 0;j<arr.length;j++){
                int dight = (arr[j]/n)%10;
                bucket[dight][count[dight]++] = arr[j];
            }
            int index = 0;
            for(int j = 0;j<10;j++)
                for(int o = 0;o<count[j];o++){
                    arr[index++]=bucket[j][o];
                }
        }
    }
}

  • 4
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值