标题:请教个小问题?冒泡法
只看楼主
starjun14
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:266
专家分:136
注 册:2009-4-26
结帖率:100%
已结贴  问题点数:20 回复次数:5 
请教个小问题?冒泡法
#include<stdio.h>
#include<stdlib.h>

int main()
{
int n[10],i,j,zan;
printf("Please input 10 numbers:\n");
for(i=0;i<10;i++)
scanf ("%d",&n[i]);
for(i=0;i<9;i++)
{
for(j=0;j<9-i;j++)
{
if (n[j]>n[j+1])
{
zan=n[j];
n[j]=n[j+1];
n[j+1]=zan;
}
}
}

for(i=0;i<10;i++)
printf("%d,",n[i] );
printf("\n");
system("pause");

}
谁能帮忙解释下这4个FOR是怎么循环的?各的作用是什么?
搜索更多相关主题的帖子: 冒泡 
2010-06-21 20:04
myhnuhai
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
威 望:3
帖 子:425
专家分:1725
注 册:2010-3-17
得分:10 
#include<stdio.h>
#include<stdlib.h>

int main()
{
int n[10],i,j,zan;
printf("Please input 10 numbers:\n");
for(i=0;i<10;i++) //分别给数组的每个元素赋值;
scanf ("%d",&n[i]);
for(i=0;i<9;i++)
{
for(j=0;j<9-i;j++) //上下两个循环是用冒泡排序法对数组进行排序;
{
if (n[j]>n[j+1])
{
zan=n[j];
n[j]=n[j+1];
n[j+1]=zan;
}
}
}

for(i=0;i<10;i++) //输出排好序的数组!
printf("%d,",n[i] );
printf("\n");
system("pause");

}

不要让肮脏的记忆,迷失了原本纯洁的心灵!
2010-06-21 20:28
o0小白0o
Rank: 1
等 级:新手上路
帖 子:3
专家分:5
注 册:2010-6-21
得分:5 
给补充一下呵呵
#include<stdio.h>
#include<stdlib.h>

int main()
{
int n[10],i,j,zan;
printf("Please input 10 numbers:\n");
for(i=0;i<10;i++)
scanf ("%d",&n[i]);
for(i=0;i<9;i++)
{
for(j=0;j<9-i;j++)
{
if (n[j]>n[j+1]) //这个是伪代码替换,当前一个别后一个大就相互替换//
{
zan=n[j];
n[j]=n[j+1];
n[j+1]=zan;
}
}
}

for(i=0;i<10;i++)
printf("%d,",n[i] );
printf("\n");
system("pause");

}
2010-06-21 21:33
sunyh1999
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:14
帖 子:1178
专家分:3032
注 册:2009-5-17
得分:5 
# include<stdio.h>
main()
{
int i,j,n,a[10],m;
printf("Enter n(n<=10):");
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%d",&a[i]);

for(i=1;i<n;i++){
for(j=0;j<n-i;j++)
if(a[j]>a[j+1]){/*不满足if里面的条件就交换*/
m=a[j];
a[i]=a[j+1];
a[j+1]=m;


}
}

for(i=0;i<n;i++)
printf("%d ",a[i]);
printf("\n");
}

这里有个程序,看下

欢迎来到我的博客:http://blog..cn/noisunyuhong
2010-06-22 09:09
wu644877373
Rank: 2
来 自:湖南
等 级:论坛游民
帖 子:47
专家分:30
注 册:2010-5-11
得分:0 
#include<stdio.h>
#include<stdlib.h>

int main()
{
int n[10],i,j,zan;
printf("Please input 10 numbers:\n");
for(i=0;i<10;i++) 指当i=1,2,3,4........时,分别给n[1],n[2],n[3]......赋值,就是给n[10]赋初值
scanf ("%d",&n[i]);
for(i=0;i<9;i++) 指要进行9趟比较
{
for(j=0;j<9-i;j++)每一趟比较要进行9-i次比较
{
if (n[j]>n[j+1])
{
zan=n[j];
n[j]=n[j+1];
n[j+1]=zan;
}
}
}

for(i=0;i<10;i++) 输出排列后的n[10]
printf("%d,",n[i] );
printf("\n");
system("pause");

}

2010-06-22 17:35
starjun14
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:266
专家分:136
注 册:2009-4-26
得分:0 
谢谢大家~
2010-06-23 07:12



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




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

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