数组分组算法求最小分组
有一整数数组,无重复元素,按升序排列。先要求将元素分组,分组要求如下:
每一组中,任意两个元素差值不超过给定值。
求最先分组。
一个具体的例子:
整数数组,100个元素,大小从1~300,无重复,升序排列,要求分组后,每组中任意两个元素差小于等于5。
我的做法,分两步:
1.扫描数组,一次取出前后两个元素,如果差大于5,就在那个地方断开
第一轮是将给定数组从整体上,处理一下,处理后得到N个小数组
2.处理每个小数组(各自都是从小到打的排序),以第一个元素为标准,一直往后找,直到超出范围,至此为一组。
更新标准,继续往后找。直到结束。
虽然感觉这样做求出的是最优的解,但是还是不知道如何进行数学上的证明:
大致感觉是这样的:
[A11 ...... A1m]
[A21 ...... A2m]
................
[An1 ...... Anm]
Anm > An(m-1) > ... > An1
Anm <= An1 + delta
An1 > A(n-1)1 + delta
假设现在有N组,且不是最优的,最优的是N-1组,那么势必:两个整组合并,这样就不满足条件了(任意两个元素差值)
希望有高手能够给点意见,首先这个算法是否最优。如何证明?