能不能告诉我在c语言,冒泡排序中内循环里 9-j是什么意思 for(i=0;i<9-j;i++)。谢谢!
解决时间 2021-02-10 15:22
- 提问者网友:轮囘Li巡影
- 2021-02-09 23:00
#include
void main()
{
int i;
int j;
int t;
int a[10]={9,8,5,4,2,0,34,45,15,432};
for(i=0;i<10;i++)
{
printf("%d\n",a[i]);
}
printf("__________\n");
for(j=0;j<9;j++)
{
for(i=0;i<9-j;i++)
{
if(a[i]>a[i+1])
{
t=a[i];
a[i]=a[i+1];
a[i+1]=t;
}
}
}
for(i=0;i<10;i++)
{
printf("%d\n ",a[i]);
}}
最佳答案
- 五星知识达人网友:骨子里都是戏
- 2021-02-09 23:40
10个数,只要比较9趟即可全部排序,所以第一个for()循环是for(j=0;j<9;j++)。
for(i=0;i<9-j;i++)的意思是每一趟 两两比较的次数 ,如 j=0时,即第一趟,10个数。两两比较9次,然后依次如此下去.......
全部回答
- 1楼网友:怀裏藏嬌
- 2021-02-10 04:31
10个数,只要比较9趟即可全部排序,所以第一个for()循环是for(j=0;j<9;j++)。for(i=0;i<9-j;i++)的意思是每一趟两两比较的次数,如j=0时,即第一趟,10个数。两两比较9次,然后依次如此下去.
- 2楼网友:英雄的欲望
- 2021-02-10 03:30
for(i=0;i<9-j;i++)你是从小到大排序的。每一次排序都会把最大的排到最后,第二次就不用比较它了因此比较剩余9数中的最大之后是比较剩余8个等等类推。其实for(i=0;i<9;i++)这样也正确,之所以那样是为了提高效率罢了。
当j=0时 9-j=9 通过内部的for循环最后把最大值赋值给a[9]当j=1时 9-i=8 把最大值赋值给a[8]------------------------------当j=8时 9-8=1 最大值赋值给a[1]剩下的就是a[0] 如果没有9-j 那么 你不能保证前面已经所得最大值在最后面的、基本就是这个意思!
- 4楼网友:千杯敬自由
- 2021-02-10 01:11
J<9是只需排8趟,每趟确定一个最值,当二重循环时每次都会少比较一个数,所以9-j
再看看别人怎么说的。
我要举报
大家都在看
推荐资讯