package com.work.home_3_1;
import java.util.Arrays;
/**
* 贪心算法-数列极差问题
* 1. 问题描述:
* N个正数数列,进行如下操作:每一次擦去其中2个数,设a和b,然后在数列中加入一个数ab+1,如此下去直至只剩下一个数。
* 在所有按这种操作方式最后得到的数中,最大的数记为MAX,最小的数记为MIN,则该数列的极差M定义为M=MAX-MIN
* 2. 分析问题:
* 对于给定的数列,如果数列每操作一次就把数列中的值从小到大排列一次,然后按从小到大顺序做运算,则可以得到数列的最大值;
* 如果数列每操作一次就把数列中的值从大到小排列一次,然后按顺序做运算,则可以得到数列的最小值。
* 3. 计算最大值:
import java.util.Arrays;
/**
* 贪心算法-数列极差问题
* 1. 问题描述:
* N个正数数列,进行如下操作:每一次擦去其中2个数,设a和b,然后在数列中加入一个数ab+1,如此下去直至只剩下一个数。
* 在所有按这种操作方式最后得到的数中,最大的数记为MAX,最小的数记为MIN,则该数列的极差M定义为M=MAX-MIN
* 2. 分析问题:
* 对于给定的数列,如果数列每操作一次就把数列中的值从小到大排列一次,然后按从小到大顺序做运算,则可以得到数列的最大值;
* 如果数列每操作一次就把数列中的值从大到小排列一次,然后按顺序做运算,则可以得到数列的最小值。
* 3. 计算最大值:
* (1)把原始数组赋值给新数组 maxArr
* (2)对数组 maxArr 进行如下循环操作,直至剩余一个值,即为最大值: ①对 maxArr按升序排序;②从 maxArr的第一位开始进行
* ab+1操作,数组第一位为第一操作数,数组最后一位为最后一位操作数, 把运算结果赋值给参与操作的第二个操作数;
* ③删除第一个操作数;④重复第①步