问题描述:设有n 个顾客同时等待一项服务。顾客i需要的服务时间为ti, 1<=i <= n 。应如何安排n个顾客的服务次序
才能使平均等待时间达到最小?平均等待时间是n 个顾客等待服务时间的总和除以n。
double smallWaitTime(int[] servTime)
{
int n = servTime.length;
// 排序
Arrays.sort(servTime);
double allWaitTime = 0;
double waitTime = 0;
// 计算等待服务的时间
for (int i=1; i<n; i++)
{
for (int j=0; j<=i; j++)
{
allWaitTime += servTime[j];
}
}
return allWaitTime/n;
}
double greedy(int[] serTime)
{
int n = serTime.length;
double allWaitTime = 0;
// 排序
Arrays.sort(serTime);
for (int i=1; i<n; i++)
serTime[i] += serTime[i-1];
for (int i=0; i<n; i++)
allWaitTime += serTime[i];
return allWaitTime/n;
}