#include <stdio.h>
int main()
{
int n;
int a[1005][2];
scanf("%d", &n);
int i,j,t;
for (i = 0; i < n; i++)
{
a[i][0] = i + 1; //编写序号
scanf("%d", &a[i][1]); //等待时间
}
for (i = 1; i < n; i++) //冒泡排序
{
for (j = 0; j < n - i; j++)
{
if (a[j][1] > a[j + 1][1])
{
t = a[j][1];
a[j][1] = a[j + 1][1];
a[j + 1][1] = t;
t = a[j][0];
a[j][0] = a[j + 1][0];
a[j + 1][0] = t;
}
}
}
for (i = 0; i < n; i++) //输出排序方法
{
printf("%d ", a[i][0]);
}
printf("\n");
int count=0;
{
for (i = 0; i < n - 1; i++) //累加等待时间
{
count += (a[i][1] * (n - i - 1));
}
}
double ave = count / (float)n; //输出平均等待时间
printf("%.2lf",ave);
return 0;
}
修改如下,供参考:
#include <stdio.h>
int main()
{
int n;
int a[1001][2];
scanf("%d", &n);
int i, j, t;
for (i = 0; i < n; i++)
{
a[i][0] = i + 1; //编写序号
scanf("%d", &a[i][1]);//等待时间
}
for (i = 0; i < n - 1; i++) //for (i = 1; i < n; i++)//冒泡排序 修改
{
for (j = 0; j < n - i - 1; j++) //for (j = 0; j < n - i; j++) 修改
{
if (a[j][1] > a[j + 1][1])
{
t = a[j][1];
a[j][1] = a[j + 1][1];
a[j + 1][1] = t;
t = a[j][0];
a[j][0] = a[j + 1][0];
a[j + 1][0] = t;
}
}
}
for (i = 0; i < n; i++) //输出排序方法
{
printf("%d ", a[i][0]);
}
printf("\n");
double count = 0; //int count = 0; 修改
for (i = 0; i < n; i++) //for (i = 0; i < n - 1; i++) //累加等待时间 修改
{
count += (a[i][1] * (n - i - 1));
}
double ave = count / n; //输出平均等待时间
printf("%.2lf", ave);
return 0;
}