Предполагая, что ваше количество чисел всегда можно разделить точно на K (то есть, не на 13 чисел в наборах по 4), это правильно.
Посредством сортировки вы получаете наиболее похожие числа как можно ближе друг к другу.насколько это возможно, очевидно.Вопрос в том, что если числа перемещать, чтобы получить худшее значение в наборе с более близкими значениями, это уменьшит максимальную разницу?
Ответ - нет.При сортировке единственные значения слева от числа равны или меньше, число, которое будет перемещаться влево, будет окружено более низкими значениями.Из двух чисел, которые вызвали максимальную разницу, по крайней мере одно получило бы еще худшего партнера, означая, что ваше максимальное расстояние станет выше.Он работает аналогично с более высокими числами справа.
Sorted:
[lowest, low, low, x] distance1 = x-lowest
[y, high, high, highest] distance2 = highest-y
Swapped:
[lowest, low, low, y] distance3 = y-lowest
[x, high, high, highest] distance4 = highest-x
Так как x distance1 и distance4> distance2, означаявсе стало хуже.
Это работает точно так же, если вы поместите туда более высокое значение.
Независимо от того, как далеко от номера, размещение другого числа в этом месте сделает их еще более выгодными.
Другой вариант - переместить все подмножество на один пробел влево:
[lowest, low, low, y]
[high, high, highest, x]
Но на самом деле это тот же результат, что и подкачка.
Так вот, как это работает с 2 наборами.
С тремя наборами:
[lowest, low, low, x]
[lowM, lowM, highM, highM]
[highM, y, high, highest]
Замена x и y такая же, как и ранее.Даже если x очень похож или даже равен нижнему левому максимуму (если средние минимумы и максимумы фактически равны), y все равно выше, чем x, что делает разницу с наименьшим большим, а x еще дальше от самого высокого.
Перемещение группы чисел вперед:
[lowest, low, lowM, lowM]
[highM, highM, highM, y]
[x, highM, high, highest];
Возможно, самая большая разница была между highM и наивысшим, и это расстояние теперь удалено.Но поскольку вы можете отодвинуть его от самого высокого значения, поместив туда еще более низкое значение, вы всегда ухудшаете его.Наибольшее расстояние наивысшее-высокоеM теперь является наивысшим-x, а x
Это также работает и в обратном направлении.Если бы был следующий набор, highM можно было бы поменять местами с более высоким числом ближе к самому высокому, но это поместило бы highM с еще большими числами, что привело бы к еще большей разнице.
Так что да, сортировка данных и последующее их разделениев равных частях всегда дает минимальную максимальную разницу, потому что изменение отсортированных наборов всегда дает худшие результаты.
Примечание: если числа не делятся на K, это становится намного сложнее, вам придется вычислитьнаименьший набор и посмотрите, можете ли вы переместить его самый высокий или самый низкий номер в следующий или предыдущий набор, не делая другой набор хуже разницы.Правило, согласно которому вы можете поменять местами только младшие числа с большими числами, удалено, так как вы можете поменять их местами без номеров, так что доказательство этого - совершенно новый уровень.