标题:菜鸟关于冒泡法的疑问!
取消只看楼主
aaaisan
Rank: 1
等 级:新手上路
帖 子:20
专家分:0
注 册:2006-3-24
 问题点数:0 回复次数:0 
菜鸟关于冒泡法的疑问!

自学《C程序设计》刚学到数组,在书中有一道例题:

用冒泡法对10个数进行比较(由大到小)

前面的讲解中说:“如果有N个数,要进行N-1趟比较,在第1趟比较中要进行N-1次两两比较,在第J趟比较中要进行N-J次两两比较”

自己画了几次图以后大概明白了这个方法,但是看到后面给出的程序以后脑袋全乱了……

程序如下:

#include <stdio.h>

void main()

{

int a[10];

int i, j, t;

printf("input 10 numbers:\n");

for (i=0; i<10;i++)

scanf("%d",&a[i]);

printf("\n");

for(j=0;j<9;j++) /* 这里还大概能想清楚,0是第一趟,9是第十趟*/

for(i=0; i<9-j;i++) /* 到这里就乱了,一共应该是有十个数,前面说了,在第J趟比较中要进行N-J次两两比较,此处N应该为10,为什么这里写的是9呢?N代表有多少个数,而不是第几趟呀,脑袋乱乱的,越想越乱…… */

if(a[i]>a[i+1])

{

t=a[i];

a[i]=a[i+1];

a[i+1]=t;


}

printf("the sorted numbers:\n");

for(i=0;i<10;i++)

printf("%d",a[i]);

printf("\n")

}

搜索更多相关主题的帖子: 疑问 冒泡 int void 
2006-04-29 14:50



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-61093-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.054894 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved