www.pudn.com > processsimulateJbuild.rar > sortRR2.java


package dispatcher;
import sun.misc.Queue;

class sortRR2 {

  public static int[] sort(int n[][]) throws InterruptedException{
    Queue queue=new Queue();
    PNode temp=null;
    int a[]=new int[24];
    for(int i=0;i<24;i++)
      a[i]=-1;

    int time=0;
    PNode p[]=new PNode[5];
    for(int i=0;i<5;i++){
      p[i]=new PNode();
    }
    for(int i=0;i<5;i++){
      p[i].number =i;
      p[i].arriveTime = n[0][i];
      p[i].serveTime =n[1][i];

    }
    while(time<24){
      for(int i=0;i<5;i++)
        if(p[i].arriveTime ==time && !p[i].isInQueue && p[i].serveTime>0  )
          {queue.enqueue(p[i]) ;p[i].isInQueue=true;}
      if(temp!=null && temp.serveTime>0)
        {queue.enqueue(temp) ;}
      if( ! queue.isEmpty() ){
        temp=(PNode)queue.dequeue() ;
        for(int i=0;i<4;i++){
          a[time++]=temp.number;
          for(int j=0;j<5;j++)
            if(p[j].arriveTime ==time && !p[j].isInQueue && p[j].serveTime>0)
              {queue.enqueue(p[j]) ;p[j].isInQueue=true;}
          temp.serveTime--;
          if(temp.serveTime<=0){
            break;
          }
        }
      }
      else time++;
    }
    return a;
  }
}