下面两个for的意思是,先把x[0]和x[9]比较,如果x[0]>x[9],则把他们位置颠倒,然后x[0]和x[8],如果x[0]>x[8],则把他们位置颠倒.....一直到j=1(也就是j=i,不满足条件j>i)结束。接下来就是x[1]和x[9]比较如果x[1]>x[9],则把他们位置颠倒........知道i=9结束。不知道能不能看懂。。PS:排序是个数的话应该是(i=0;i<10;i++)
第一个for循环里嵌套了第二个for循环,里面就是冒泡排序法,将x[0]与x[9].x[8] 等依次比较。第三个for循环是输出,这得理解。里面的循环必须执行完。
这个程序里面少了几个{} ,那两个for应该是这样的:
for(i=0;i<9;i++)
{
for(j=9;j>i;j--)
{
if(x[i]>x[j])
{
k=x[i];
x[i]=x[j];
x[j]=k;
}
}
}
这样看明白了吧?
懂冒泡法就懂这个了,你可以查一下冒泡法排序
i = 0;
for(j=9;j>i;j--)
if(x[i]>x[j])
{
k=x[i];
x[i]=x[j];
x[j]=k;
}
x[0]是这十个数中最小的
i = 1;
for(j=9;j>i;j--)
if(x[i]>x[j])
{
k=x[i];
x[i]=x[j];
x[j]=k;
}
x[1]是这除x[0]外九个数中最小的
依此类推,其实就是一冒泡排序法
在循环中心的条件语句决定了排序的方向,如果是大于号则降序排列,小于号升序;
条件语句的内容是,如果发现下标是i的数比下标是j的数大就交换,或者说下标i只保留小的数;
再看外层循环:
i循环指定i的值从0~8变化,也就是每次循环指定的a[i]顺序是数组前9个数
j循环的值从9变到i+1,就是在i确定后a[j]分别指向a[i]后面的每一个数,这些数与a[i]比较,比a[i]小就交换,最后a[i]必定存放a[i]~a[9]中最小的数。