Я ищу реализацию Clump Sort на любом языке или его псевдокод. Оригинальная исследовательская работа не содержит никаких. Поскольку я не могу найти какое-либо существующее решение (в основном из-за того, что этот метод довольно новый), я решил реализовать его самостоятельно. Итак, в качестве первого шага мне нужно идентифицировать скопления данных в нашем числовом вводе. Я понимаю, что это может пойти в сторону искусственного интеллекта, но я готов к этому, так как я все равно знаю основы.
Итак, есть идеи о том, как идентифицировать скопления данных, ребята? А пока я хочу сосредоточиться на скоплениях чисел, которые поднимаются или опускаются.
Например:
3, 7, 10, 56, 4, 1, 3, 34
имеет 3 комка в порядке следования:
3, 7, 10, 56
4
1, 3, 34
У меня вопрос, как это сделать программно?
(Сортировка комков: http://ieeexplore.ieee.org/xpl/freeabs_all.jsp?arnumber=5489222)
Спасибо!
UPDATE:
Хорошо, потратив некоторое время, я нашел решение, но понятия не имею, было ли то же самое в уме автора статьи. Если бы это было так, мы, вероятно, добавили к сложности сортировки кучи вместо того, чтобы минимизировать ее.
int[] input = { 30, 7, 10, 56, 4, 1, 3, 34 };
List<ClumpStartEnd> clumps = new List<ClumpStartEnd>();
public void ClumpIdentifier(int start)
{
for (int i = start + 1; i < input.Length + 1; i++)
{
if (i == input.Length || input[i] < input[i - 1])
{
clumps.Add(new ClumpStartEnd(start, i - 1));
ClumpIdentifier(i);
break;
}
}
}