第1个回答 2018-11-27
voidsort(intarray[],intn)//定义一个整数数组array[],定义一个整数n
{
inti,j,k,t;//定义整数i,j,k,t
for(i=0;i<n-1;i++)//令i=0,在i小于n-1的时候执行{}以内的函数,执行完成后i加1
{
k=i;//令k=i
for(j=i+1;j<n;j++)//令j=i+1,在j小于n的时候,执行以下函数,执行完成后j加1
if(array[j]<array[k])//如果array[j]<array[k]
k=j;//令k=j
t=array[k];array[k]=array[i];array[i]=t;//array[i]和array[k]交换数值
}
}
我们看一遍这个函数,从第一个for开始。令i=0,首先判断i是否小于n-1,因为上面n没有定义具体的数值,我们假设n为10,那么现在i是小于n-1(9)的,那么执行{}里的函数。
k=i//因为i=0,所以k=0
for(j=i+1;j<n;j++)//j=i+1=1,判断j是否小于n,因为j=1,n=10,所以j<n,执行下一个函数
if(array[j]<array[k])k=j;//array[j]即array[1],array[k]即array[0],这是判断array[0]和array[1],如果数组的第一个值小于第2个值,那么k=j,即k=1,否则k的值不变。执行完这个函数之后要执行上面一个for函数的j++操作,即j=j+1=2,然后再比较array[j]和array[k]的大小,如此循环到j=n-1的时候,一个数组所有的数值都已经对比完成,那么k就是所有数组中最大的一个值了。。令array[0]=array[k]即完成了第一轮的冒泡,最大的数值已经被赋到array[0]了。然后再回到第一个for函数执行i++,再选出剩余数值里最大的值。。。。循环结束后,数据就是按照从大到小排序了。。
如果有问题你可以百度hi我~~