请看下面程序,从5个数中随机挑3个组成一组,并做相应的计算,输出所有可能的组合和计算结果:
int main()
{
   int i,j,n;
   double g,m,f;
   double b[5]={9,8,7,6,5};
   double a[5][5]={{1,0.3,0.7,1.9,2.0},
{0.8,1,0.7,0.7,0.6},
         {0.7,0.8,1,0.3,0.4},
         {0.8,0.9,0.7,1,0.5},
{0.7,0.6,0.5,0.4,1}};
   for(i=1;i<=4;i++)
for(j=i+1;j<=4;j++)
for(n=j+1;n<=5;n++)
{
    g=b[i]+b[j]+b[n];
    m=a[i][j]+a[i][n]+a[j][n];
                      f=g/m;
                      printf("%d,%d,%d,%f\n",i,j,n,f);
} 问题:如果我想根据计算结果f,从大到小排序,既根据结果排序对应的组合,该怎么做呢? 若只取最大的前20个,又该怎样做。数字有可能不止5,可能上百~