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;} }

能详解一下每一步的作用吗?还有为什么要有if(k!=i)这个判断?... 能详解一下每一步的作用吗?还有为什么要有if(k!=i)这个判断? 展开
 我来答
时间异能者
2012-08-19
知道答主
回答量:16
采纳率:0%
帮助的人:8.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;} }
追问
这个是选择法排序,为什么加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;}
}
这是简单选择排序。。。是把较大的数往前移。也就是说是升序。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式