数列极差-贪心算法

package com.work.home_3;

import java.util.Arrays;

/**

 * 贪心算法-数列极差问题

 * 说明:对于给定的数列,如果按数列中的值从小到大的顺序做运算,则可以得到数列的最大值;

 * 如果按数列中的值从大到小做运算,则可得到数列的最小值。因此,对于给定的数列,先对数列进行排序,然后再进行最大、最小值的计算

 *

 * @author jun

 */

public class Greedy {

    /*

     * 贪心算法

     */

    public static int greedy(int[] arr) {

        // 对数组arr按升序进行排序

        Arrays.sort(arr);

        System.out.println(“\n排序后数列值变为:”);

        System.out.println(Arrays.toString(arr) + “\n”);

        // 数列最大值

        int max = arr[0];

        // 数列最小值

        int min = arr[arr.length – 1];

        for (int i = 1, j = (arr.length – 2); i < arr.length || j >= 0; i++, j–) {

            max = max * arr[i] + 1;

            min = arr[j] * min + 1;

        }

        System.out.println(“最大值 max = ” + max);

        System.out.println(“最小值 min = ” + min);

        // 极差

        return (max – min);

    }

}

package com.work.home_3;

import java.util.Arrays;

import java.util.Scanner;

/**

 * 测试函数

 * @author jun

 *

 */

public class Test {

    public static void main(String[] args) {

        Scanner sc = new Scanner(System.in);

        System.out.println(“请输入正整数数列的元素个数 n = “);

        int n = sc.nextInt();

        sc.close();

        // 测试数组

        int[] arr = new int[n];

        // 给数组赋值

        System.out.println(“原始数列值为:”);

        for (int i = 0; i < arr.length; i++) {

            arr[i] = (int) (Math.random() * 10);

        }

        // 输出数组值

        System.out.println(Arrays.toString(arr));

        //输出数列的极差

        System.out.println(“\n数列arr的极差为:” + Greedy.greedy(arr));

    }

}

    原文作者:贪心算法
    原文地址: https://blog.csdn.net/abcjiaxuejun/article/details/53123070
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞