数组排序后相邻元素最大差值

问题:

给定一个数组(长度为n),如果排序后,求相邻两个数的最大差值,要求时间复杂度为n,不能使用非基于比较的排序

分析:

①使用桶的思想,设置N+1个桶,根据鸽笼原理,必然有一个空桶,那么就排除了最大差值在一个桶内,因为空桶两侧的差距肯定大于桶内的差距

②但,最大差值不见得是空桶左侧max和空桶右侧min,需要依次遍历求差值

③使用桶的思想时间复杂度是N,但没有使用桶排序,桶排序是非基于比较的排序,桶就是容器的含义,计数排序和基数排序是桶排序的具体实现,是稳定的排序,时间复杂度为N

例子:

输入一个数组[17, 0, 99, 23, 67, 13, 14, 89, 4],因为这个数组有9个数,所以分配10个桶。

先遍历整个数组,找出最小值min=0,最大值max=99.

分配10个桶,编号为0~9.


3.遍历数组,依次入桶,记录每个桶的最小值和最大值.入桶的算法为


,num为当前值,Len为数组长度,得到的结果为该num应该入几号桶。


你可能感兴趣的:(数组排序后相邻元素最大差值)