桶排序--变种

给定一个无序的数组,找出数组在排序之后,相邻元素之间最大的差值。

如果数组元素个数小于 2,则返回 0。
桶排序的简单使用

本题思路

class Bucket{
        private int maxValue;
        private int minValue;
        public Bucket(){
            maxValue=Integer.MIN_VALUE;
            minValue=Integer.MAX_VALUE;
        }
    }
    public int maximumGap(int[] nums) {
        if(nums.length<2){
            return 0;
        }
        int max=nums[0];
        int min=nums[0];
        //找到最大值和最小值
        for(int i=0;inum?max:num;
            min=min0?bucketsize:1;
        //bucketsize是最大值减最小值除以间隔数返回的平均每个间隔的平均间距,并且最大间距一定大于平均间距
        //数据内元素大于二,则bucketsize>1
        //创建bucketsize数组
        Bucket[] buckets=new Bucket[(max-min)/bucketsize+1];
        //计算当前元素与最小值的间隔与平均间隔的倍数作为所在桶的索引,填充至相应的桶,并更新桶的最大最小值
        for(int i=0;i0){
                System.out.println(ansgap+"--"+buckets[i].minValue+"--"+pre);
                ansgap=Integer.max(ansgap,buckets[i].minValue-pre);
            }
            pre=buckets[i].maxValue;
        }
        return ansgap;
    }

你可能感兴趣的:(桶排序--变种)