Как разбить числа по группам так, чтобы в группах находились близкие по значению числа?
Это называется кластеризация, и самый ходовой метод для неё — K-means.
Пример из MatLab (через двоичные деревья) (кластерный анализ)
PD = pdist(Data);             % (Data,'cityblock');
Z = linkage(PD,'average');   % (PD);
dendrogram(Z)

c = cophenet(Z,PD)
%I = inconsistent(Z);

T = cluster(Z,'cutoff',cut);
% или T = cluster(Z,'maxclust',nClust);