c语言冒泡排序法的太多不懂

发布网友 发布时间:2022-04-24 11:18

我来回答

1个回答

热心网友 时间:2022-05-22 03:09

第一个问题:
for(i=0;i<8;i++)
for(j=0;j<8-i;j++)
你把这2行的8改成9
for(i=0;i<9;i++)
这行的9改成10
第二个问题
for没加大括号,那么默认for后面第一个语句是循环体。
因为
for(j=0;j<8-i;j++)
{
if(a[j]>a[j+1])
{
k=a[j];
a[j]=a[j+1];
a[j+1]=k;
}
}
这个算是个复合语句,默认为第6行for的循环体了
第三个问题与第四个问题:
你这个算法的意思是:比较相邻的2个数把大的赋值到后面
(如第一个元素和第二个比较用第二个元素保存小的。再通过j控制的循环进行第二个与第三个比较,第三个元素保存小的。如此下去)
这样执行第一次i的循环
就用第10个元素保存了最小的,
执行第二i的循环
就用第9个元素保存了第二小的,
如此下去就实现了排序。
而j<9-i;是控制相邻的数要比较几次,因为后面的元素会按循序排列好,就不用比较了。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com