Ex 5_32 一臺服務器當前有n個等待服務的顧客...第八次作業
阿新 • • 發佈:2017-12-05
stub pac 時間 nbsp void 等待時間 method 作業 out
設第i個客戶需要等待的時間為ti,則n個客戶需要總的等待時間為
,因此,要使T最小,則要使
即可,所以,對所有的ti按升序進行排序和服務將得到最小的等待時間。
1 package org.xiu68.ch6.ex8; 2 3 public class Ex5_32 { 4 5 public static void main(String[] args) { 6 // TODO Auto-generated method stub 7 int[] t=new int[]{5,4,3,2,1}; 8 minServeTime(t);View Code9 } 10 11 public static void minServeTime(int[] t){ 12 quitSort(t,0,t.length-1); 13 int waitTime=0; 14 for(int i=0;i<t.length;i++){ 15 waitTime+=(t.length-i+1)*t[i]; 16 } 17 System.out.println("所需等待的最小時間為: "+waitTime); 18 } 19 20 //快速排序算法 21 public static void quitSort(int[] r, int i,int j){ 22 if(i<j){ 23 int middle=partition1(r, i, j); 24 quitSort(r, i, middle-1); 25 quitSort(r, middle+1, j); 26 } 27 } 28 29 //快速排序第一種劃分算法 30 public static int partition1(int[] r,int i,int j){ 31 int temp=r[i]; 32 while(i<j){ 33 while(i<j && r[j]>=temp) //從j向前找比temp小的值 34 j--; 35 36 if(i<j) 37 r[i++]=r[j]; //將j指向的值移到i的位置,i往後移一個位置 38 39 while(i<j && r[i]<temp) //從i向後找比temp大的值 40 i++; 41 42 if(i<j) 43 r[j--]=r[i]; 44 } 45 46 r[i]=temp; 47 return i; 48 } 49 }
Ex 5_32 一臺服務器當前有n個等待服務的顧客...第八次作業