Пакет y2019.Algorithm.array; / ** * @ProjectName: Резак-Point * @package: y2019.Algorithm.array * @ClassName: ArrayPairSum * @author: xiaof * @Description: Массив 561. Разделяют I * в заданном массиве целые числа 2N, ваш к целевой группе ИС в этом п пары целых чисел Integer, * говорит (A1, B1), (A2, B2), ..., (AN, BN) от суммы , которая делает мин (AI, BI) для . от 1 до I н-все как , как это возможно большим. * * Входные: [1,4,3,2] * * Вывод :. 4 * Пояснение: 2 п-IS, а максимум 4 пары SUM = мин (1, 2.. ..) + мин (3 ,. 4) * * задана длина 2N (даже) массив, разделенный на п групп, причем каждая группа возвращает меньшее значение и сумму, так что , как большая сумма * @date: 2019/7 / 2 17:24 * @version: 1,0 * / Открытый класс {ArrayPairSum общественного ИНТ решения ( ИНТ [] в НУМСЕ) { // находит значение каждого небольшого вопроса, окончательного суммирование, как можно больше, что близко к набору данных предпочтительно размещают, или разрыв большое, приведет к конечному значению сильно отличается quikSort (в НУМС, 0 , nums.length); // затем сливает последовательность, и сбор данных может быть растопыренным Int Result = 0 ; для ( INT I = 0; I <с НУМСОМ. длина; = I + 2 ) { Результат + = в НУМС [I]; } возвращение результата; } Частная пустота quikSort ( INT [] массив, Int слева, INTсправа) { если (слева < справа) { INT середины = partitionSort (массив, слева, справа); quikSort (массив, слева, в середине); quikSort (массив, середина + 1 , справа); } } Частные INT partitionSort ( INT [] массив, Int слева, Int справа) { // если (слева == правый || левый> правый) { // вернуться влево; // } INT midValue = массив [влево]; INT начать = слева; ИНТконец = вправо; // 分区排序 делать { делать {++ старт; } В то время (начало <правый && массив [пуск] < midValue); делать { - конец; } В то время как (левая <конец массива && [End]> midValue); // 交换 , если (начало < конец) { INT Temp = массива [пуск]; Массив [пуск] = массив [конец]; Массив [конец] = темп; } } В то время (начало < конец); // После завершения обмена, окончательное отверстие , чтобы заполнить его, на этот раз влево и вправо в шахматном порядке, так правильно и покинул левый Array [слева] = Array [End]; Array [End] = midValue; вернуться конец; } общественности статический недействительный основной (String арг []) { INT А1 [] = {1,4,3,2 }; ArrayPairSum Fuc = новый новый ArrayPairSum (); System.out.println (fuc.solution (А1)); } }