C语言 冒泡法中的变量i和j到底表示什么

来源:百度知道 编辑:UC知道 时间:2024/06/18 18:30:38
for(j=1;j<=4;j++)
for(i=1;i<=4-j;i++)
if(a[i]>a[i+1])
{
t=a[i];
a[i]=a[i+1];
a[i+1]=t;
}

这个冒泡法的算法中
for(j=1;j<=4;j++)
for(i=1;i<=4-j;i++)
这两行里的变量 j和变量i到底表示什么, 4-j又是表示什么呢?

在你发的这个程序中,j表示需要比较的“趟数”(从第一个元素比较到最后一个元素称为一趟)。

i则用于控制每一趟的比较次数,并通过i比较相邻两个数(分别是a[i]和a[i+1])的大小,并进行适当的交换。

由于每一趟比较结束后,最大的数字一定已经到达最后的位置,所以接下来的各趟比较中便不需要再去比较上一趟结束后排在最后的元素,因此每一趟比较的次数就是4-j次,其中4就是数组中元素的数量

for(j=1;j<=4;j++) /*进行4次循环,实现4次比较,*/
for(i=1;i<=4-j;i++) /*在每一趟中进行4-j次比较*/
if(a[i]>a[i+1]) /*相邻两个数的比较*/