回 帖 发 新 帖 刷新版面

主题:[讨论]大家都来看看,帮帮我,谢谢

#include <stdio.h>
void main()
{ void sort(int x[ ],int n);
int *p,i,a[10];
    p=a;
      for(i=0;i<10;i++)
       scanf("%d",p++);
    p=a;
     sort(p,10);
     for(p=a,i=0;i<10;i++)
    {printf("%d ",*p);p++;}
}
void sort(int x[],int n)
    {int i,j,k,t;
       for(i=0;i<n-1;i++)
       {k=i;
         for(j=i+1;j<n;j++)
         if(x[j]>x[k]) k=j;
         if(k!=i)
         {t=x[i];x[i]=x[k];x[k]=t;}
        }
      }
我想知道这个程序最后五行是什么意思?我就是不明白。望大家指点,谢谢

回复列表 (共2个回复)

沙发

[code=c]         if(x[j]>x[k]) k=j;          // 与上一行的循环组合,代表k取数组中,下标大于或等于i的部分的最大值所在的下标
         if(k!=i)                    // 如果k值有变化
         {t=x[i];x[i]=x[k];x[k]=t;}  // 则交换x[i]与x[k]的值,保证x[i]是x[i]到x[n-1]中最大的
        }                            // 结束外层循环体
      }                              // 结束函数体[/code]

板凳


嗯嗯,我基本上算明白啦,我会再好好看看的,非常感谢。[em2][em2][em2]

我来回复

您尚未登录,请登录后再回复。点此登录或注册