经典例题-多机调度问题

What

  1. 把大量的工作分配的许多的机器上
  2. 每一步选择当前最好的
  3. 最后的解不一定是最优的
    private static void greedStrategy() {
        // sort
        Arrays.sort(works, (a, b) -> b - a);
        // when workNum < machineNum
        if (workNum <= machineNum) {
            minimalTime = works[0];
            return;
        } else {
            // 为每一个作业选择机器
            for (int i = 0; i < workNum; i++) {
                // 选择最小的机器
                int flag = 0;
                int tmp = machines[flag];
                // 选择最小的机器
                for (int j = 1; j < machines.length; j++) {
                    if (tmp > machines[j]) {
                        flag = j;
                        tmp = machines[j];
                    }
                }
                // 将作业交个机器做
                machines[flag] += works[i];
            }
            // find max;
            minimalTime = findMax(machines);
        }
    }
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,020评论 25 708
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,868评论 18 139
  • 抽象工厂模式相对于工厂模式来说,最大的不同是:将工厂的共同特征抽取出来,提供一个生成工厂类。 1.举例制作果汁,首...
    jfson_土豆阅读 216评论 0 1
  • 看完电影后,更丧了
    莫西莫多阅读 61评论 0 0
  • 现在读大学的孩子很多都会选择会计专业,如果毕业后一直从事会计工作的话就会面临两个问题,是慢慢地考职称还是考CPA。...
    盒子教育阅读 488评论 0 2