排序篇--桶排序
算法描述:
桶排序是计数排序的升级版。它利用了函数的映射关系,高效与否的关键就在于这个映射函数的确定。
桶排序 (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;
            }
        }
}
                    
                
                
            
        
浙公网安备 33010602011771号