2016年4月21日百度笔试题--ShortestJob

import java.util.ArrayList;
import java.util.List;

// IMPORT LIBRARY PACKAGES NEEDED BY YOUR PROGRAM
// SOME CLASSES WITHIN A PACKAGE MAY BE RESTRICTED
// DEFINE ANY CLASS AND METHOD NEEDED
// CLASS BEGINS, THIS CLASS IS REQUIRED
public class ShortestJob
{
  // METHOD SIGNATURE BEGINS, THIS METHOD IS REQUIRED
  public static float waitingTimeSJF(int[] requestTimes, int[] durations)
  {
    // INSERT YOUR CODE HERE
      float time=0;
      float waitTime=0;
      int min;
      int count=0;
      float[] flags=new float[requestTimes.length];
      for (int i = 0; i < flags.length; i++) {
        flags[i]=-1;
      }
      List<Integer> index=new ArrayList<Integer>();
      while (count<requestTimes.length) {
          for (int i = 0; i < requestTimes.length; i++) {
            if (requestTimes[i]<=time) {
                if (flags[i]==-1) {
                    index.add(i);
                }
            }else {
                break;
            }
        }
          min=index.get(0);
          count++;
          for (int i = 0; i < index.size(); i++) {
            if (durations[min]>durations[index.get(i)]) {
                min=index.get(i);
            }
        }
          flags[min]=time;
          time+=durations[min];
          index.clear();

      }

      for (int i = 0; i < flags.length; i++) {
        waitTime+=flags[i]-requestTimes[i];
    }
      waitTime=waitTime/requestTimes.length;
      return waitTime;
  }
  // METHOD SIGNATURE ENDS
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值