算法--贪心算法--最优装载

贪心算法

1.一个贪心算法总是做出当前最好的选择,也就是说,它期望通过局部最优选择从而得到全局最优的解决方案。
2.两个特性:
贪心选择性质和最优子结构性质。
①贪心选择:问题的整体最优解通过一系列局部最优的选择得到.(没有回溯)
②最优子结构:一个问题的最优解包含其子问题的最优解
3.步骤:
①先确定贪心策略,选择最好的一个方案
②根据贪心策略,一步一步得到局部最优解
③把所有局部最优解合成为原来问题一个全局最优解

最优装载问题

在容器容量固定的情况下,运用贪心算法求解最优装载问题,要求装的物品最多,先从重量最轻的开始装(先排序),直到达到最大容量。
时间复杂度O(n+log(n))
空间复杂度O(1)
代码:

public class A {
    public static void main(String[] args) {
        double c = 30;//载重量
        double w[] = {4, 10, 7, 11, 3, 5, 14, 2};//古董重量的数组
        int n = 8;//古董数量
        Arrays.sort(w);//按古董重量升序排序
        double tmp = 0;//tmp为装装到船上的古董重量,
        int ans = 0;//为已经装载的古董个数
        for (int i = 0; i < n; i++) {
            tmp += w[i];
            if (tmp <= c) {
                ans++;
            } else {
                break;
            }
        }
        System.out.println("能装入的古董最大数量为" + ans);
    }
}

你可能感兴趣的:(菜鸡之路,算法,数据结构)