一个数组分类的小算法问题

有点像是数据结构的问题
比如一个数组a=[6,9,48,51,7,55]
我按里面相差不超过1,就能分出[6,7] [9] [48] [51] [55]
我按里面相差不超过3,就能分出[6,9,7] [48,51] [55]
我按里面相差不超过5,就能分出[6,9,7] [48,51,55]

请问下大神们怎么用c或者python实现

用Python写了一个

 def f(l, n):
    l.sort()
    ans = []; i = 0
    while i < len(l):
        temp = [l[i]]  # 到这就必须是一个新的类了
        i += 1  # 判断下一个
        while i < len(l) and l[i] - l[i - 1] <= n:
            temp.append(l[i])
            i += 1
        else:
            ans.append(temp)
    return ans

欢迎关注我的公众号: 肥宅Sean笔记

建立二维数组作为结果存放
排序,然后依次比较前后两个差别是多少,如果超过n,就放在下一个数组下标,放进去。

两个数组 一个存放数据 一个存放所属集合
首先对数据排序 然后循环 如果符合条件将所属集合设为相同 否则集合序号加一 将目前判断数放入其中