排序篇--桶排序

算法描述:

桶排序是计数排序的升级版。它利用了函数的映射关系,高效与否的关键就在于这个映射函数的确定。

桶排序 (Bucket sort)的工作的原理:假设输入数据服从均匀分布,将数据分到一定数量的桶里。

实现逻辑:

1.设置一个定量的数组当作空桶;

2.遍历输入数据,并且把数据一个一个放到对应的桶里去,记录对应数据出现的频率;

3.读取桶数据出现的频率来恢复数据。

 

public static void bucketSort(int[] arr)
{
        if (arr == null || arr.length < 2)
        {
            return;
        }

        int max = Integer.MIN_VALUE;
        for (int i = 0; i < arr.length;i++)
        {
            max = Math.max(max,arr[i]);
        }

        //桶比max data多一个 记录对应 data 出现的频率
        int[] bucket = new int[max + 1];
        for(int i = 0;i < arr.length;i++)
        {
            bucket[arr[i]]++;
        }

        // 使用对应 data 出现的频率恢复数据
        int i = 0;
        for(int j = 0;j < bucket.length;j++)
        {
            while (bucket[j]-- > 0)
            {
                arr[i++] = j;
            }
        }
}

 

排序篇--桶排序

上一篇:Java中构造方法的作用及注意事项


下一篇:SpringCloud的Config分布式配置中心