回 帖 发 新 帖 刷新版面

主题:[讨论]新手急求解答


#include<stdio.h>
main()
{ void sort(int x[],int n);
int i,*p,a[5];
p=a;
for(i=0;i<5;i++)
scanf("%d",p++);
p=a;
sort(p,5);
for(p=a,i=0;i<5;i++)
{ printf("%4d",*p);
  p++;
}
printf("\n");
}
void sort(int x[],int n)
{int i,j,t,k;
for(i=0;i<n-1;i++)
{k=i;
for(j=i+1;j<n;j++)
if(x[j]>x[i]) k=j;
if(k!=i)
{t=x[i];x[i]=x[k];x[k]=t;}
}
}

为什么要有if(k!=i)
{t=x[i];x[i]=x[k];x[k]=t;}
小弟是一新手 急求解答

回复列表 (共2个回复)

沙发

void sort(int x[],int n)
{int i,j,t,k;
for(i=0;i<n-1;i++)
{k=i;
for(j=i+1;j<n;j++)//将i后最大的数的位置用k标记,即x[k]为最大的数。
if(x[j]>x[i]) k=j;
if(k!=i)//如果x[k]==x[i],则不替换,因为该函数就是用后面的大数与前面的较小的数替换,使数组从大到小排列
{t=x[i];x[i]=x[k];x[k]=t;}
}
}

板凳

for(j=i+1;j<n;j++)//将i后最大的数的位置用k标记,即x[k]为最大的数。
if(x[j]>x[i]) k=j;
if(k!=i)//如果x[k]==x[i],则不替[url=http://www.shenggang.com]磁力泵[/url]因为该函数就是用后面的大数与前面的较小的数替换,使数组从大到小排列
{t=x[i];x[i]=x[k];x[k]=t;}
]

我来回复

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