
for(i=0;i<n-1;i++) { for(j=i+1;j<n;j++) if(x[j]>x[k]) k=j; if(k!=i) {t=x[j];x[j]=x[k];x[k]=t;} }
2个回答
展开全部
首先 for(i=0;i<n-1;i++) 是一个循环 从 i = 0 一直循环到 i < n-1 循环标准为每一次都+1 ,
for(j=i+1;j<n;j++) 和 for(i=0;i<n-1;i++) 其实是同样的东西 都重复同样的次数 因为 i < n-1 ; j = i+1 ;
j < n
x[任何物] 是一个方程式 只是把 j k 的数值带进去而已
后面可以解释为 将j,k带入x方程 如果 带入后的数值 x[j] > x[k] 则 k = j
k!=1 的意思是 k不等于1
所以k不等于1的时候则做 {t=x[j];x[j]=x[k];x[k]=t;} }
for(j=i+1;j<n;j++) 和 for(i=0;i<n-1;i++) 其实是同样的东西 都重复同样的次数 因为 i < n-1 ; j = i+1 ;
j < n
x[任何物] 是一个方程式 只是把 j k 的数值带进去而已
后面可以解释为 将j,k带入x方程 如果 带入后的数值 x[j] > x[k] 则 k = j
k!=1 的意思是 k不等于1
所以k不等于1的时候则做 {t=x[j];x[j]=x[k];x[k]=t;} }
追问
这个是选择法排序,为什么加if(k!=i)
追答
if(x[j]>x[k]) k=j 是一个选择
if(k!=i) 是另外一个选择
2012-08-20
展开全部
你的代码是有问题的,在第二个for循环前面少了一个 k=i; 还有一个if后面的交换写错了。。。正确的如下:
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;}
}
这是简单选择排序。。。是把较大的数往前移。也就是说是升序。
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;}
}
这是简单选择排序。。。是把较大的数往前移。也就是说是升序。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询