1. 程式人生 > >Ex 5_32 一臺服務器當前有n個等待服務的顧客...第八次作業

Ex 5_32 一臺服務器當前有n個等待服務的顧客...第八次作業

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);
9 } 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 }
View Code

Ex 5_32 一臺服務器當前有n個等待服務的顧客...第八次作業