高响应比算法

package gaoxiangyingbi;

public class gaoxiangyingbi {

	public static void main(String[] args) {		// TODO Auto-generated method stub
		int[][] jincheng=new int[][] {{0,2,0},{1,6,0},{2,1,0},{3,5,0}};//存放进程信息,第一个为产生时间,第二个为要求服务时间
		int[] waittime=new int[jincheng.length];
		int time=0;
		double[] xiangyingbi=new double[jincheng.length];
		int i=0;
		int fulltime=0;
		int note=0;//存放响应比最高的进程号
		double max=0;//存放最高响应比的值
		while(i<jincheng.length) {
			fulltime+=jincheng[i][1];
			i++;
		}
		i=0;
		while(time<fulltime) {
			for(i=0;i<jincheng.length;i++) {//计算进程的等待时间
				if(jincheng[i][2]!=1) {
					if(time>=jincheng[i][0]) {//如果时间点过了进程的产生时间,计算进程的等待时间
						waittime[i]=time-jincheng[i][0];
						//System.out.println("进程为:"+i+"等待时间为:"+waittime[i]);
					}
					else {					//如果未到达进程开始时间,等待时间置为-1
						waittime[i]=-1;
					}
				}
			}
			for(i=0;i<jincheng.length;i++) {//计算各进程的响应比
				if(jincheng[i][2]!=1) {
					if(waittime[i]>=0) {
						xiangyingbi[i]=1+(waittime[i]/jincheng[i][1]);
						//System.out.println("进程为:"+i+"响应比为:"+xiangyingbi[i]);
					}
					else {
						continue;
					}
				}
			}
			note=0;
			max=xiangyingbi[0];
			for(i=1;i<jincheng.length;i++) {
				if(xiangyingbi[i]>max) {//遍历响应比,获取最高响应比和对应进程号
					note=i;
					max=xiangyingbi[i];
				}
			}
			int temp=note+1;
			System.out.println("进程号为:"+temp);
			System.out.println("进程产生时间为:"+jincheng[note][0]+"进程要求服务时间为:"+jincheng[note][1]);
			System.out.println("进程优先级为"+max);
			time+=jincheng[note][1];
			jincheng[note][2]=1;
			xiangyingbi[note]=0;
			System.out.println("--------------------------------------------");
		}
	}
}