C++ 冒泡排序法

从小到到排序...实现不了,麻烦你们指出来,也有劳帮我解释解释错的原因,应该怎么去理解这些条件,感谢了#include<iostream.h>main(){inta[10... 从小到到排序...
实现不了,麻烦你们指出来,
也有劳帮我解释解释错的原因,
应该怎么去理解这些条件,感谢了
#include<iostream.h>
main()
{
int a[10],i,j,t;
cout<<"输入10个数:";
for(i=0;i<10;i++)
cin>>a[i];
for(i=0;i<9;i++)
{
for(j=0;j<=i;j++) //这里的j<=i怎么去理解这个条件
if(a[j]>a[j+1])
{
t=a[j+1];
a[j+1]=a[j];
a[j]=t;
}
for(i=0;i<10;i++)
cout<<a[i];
}
}
展开
 我来答
问明6E
高粉答主

2019-05-23 · 每个回答都超有意思的
知道答主
回答量:279
采纳率:100%
帮助的人:12.9万
展开全部

代码:

#include&lt;iostream&gt;

using namespace std;

void print(int arr[],int n)

{

for(int j=0;j&lt;n;j++)

{

cout&lt;&lt;arr[j]&lt;&lt;"";

}

cout&lt;&lt;endl;

}

void BubbleSort(int arr[],int n)

{

for(int i=0;i&lt;n-1;i++)

{

for(int j=0;j&lt;n-i-1;j++)

{

if(arr[j]&gt;arr[j+1])

{

int temp=arr[j];

arr[j]=arr[j+1];

arr[j+1]=temp;

}

}

}

}

int main()

{

int s[10]={8,1,9,7,2,4,5,6,10,3};

cout&lt;&lt;"初始序列:";

print(s,10);

BubbleSort(s,10);

cout&lt;&lt;"排序结果:";

print(s,10);

system("pause");

}

扩展资料:

冒泡排序的基本思想:比较相邻的元素,如果反序则交换。通过第一趟排序能找出最大的元素,并使最大的元素移至最后一位,然后通过第二次排序使次大的元素移至倒数第二位,以此类推,直至所有元素有序。

冒泡排序算法的原理如下:

1、比较相邻的元素。如果第一个比第二个大,就交换他们两个。

2、对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。

3、针对所有的元素重复以上的步骤,除了最后一个。

4、持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。

参考资料:

百度百科——冒泡排序

百度网友fcf1e82
2018-09-27
知道答主
回答量:2
采纳率:0%
帮助的人:1609
展开全部
#include"iostream"
using namespace std;
int main(){
int a[10];
int i, j, t;
cout << "输入十个数" << endl;
for (i=1;i<=10;i++){
cin >> a[i];//输入十个数
}
cout << endl;
for (j=1;j<=9;j++){//进行9轮比较
for (i=1;i<=10-j;i++){//在每一轮中都要进行10-j次两两比较
if (a[i]<a[i+1]){//如果前面的数大于后面的数
t = a[i]; a[i] = a[i + 1]; a[i + 1] = t;//交换两个数字的位置,大数下沉,小数上升
}
}
}
cout << "有小到大:";
for (i=1;i<=10;i++){
cout << a[i] << "\t";

}
system("pause");
return 0;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
沧海雄风2009
2011-11-17 · TA获得超过1.1万个赞
知道大有可为答主
回答量:8525
采纳率:79%
帮助的人:2837万
展开全部
你的冒泡双循环显然写的不对

冒泡的经典写法是这样的 自行体会 一句话两句话说不清楚 可以查资料看看为什么要这样写

如果实在理解不了就死记硬背吧
// for (i=0;i<5-1;i++)
// {
// for (j=0;j<5-i-1;j++)
// {
// if (a[j]>a[j+1])
// {
// tmp=a[j];
// a[j]=a[j+1];
// a[j+1]=tmp;
// }
// }
// }
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
韩涛董青
2011-11-17 · TA获得超过443个赞
知道小有建树答主
回答量:166
采纳率:0%
帮助的人:126万
展开全部
第二个for循环作用 第一次结束后将最大的数放置最后 第二次结束后将第二大数放到倒数第二的位置 以此类推 相应的 循环的次数应该越来越少 因为大数逐渐排列好了 所以j<9-i   还有啊 c++ #include <iostream> 打印a[i]的for循环拿出来
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
terranlong
推荐于2018-02-27 · TA获得超过7294个赞
知道大有可为答主
回答量:2660
采纳率:0%
帮助的人:3993万
展开全部
改成这样就好了
#include<iostream>
using namespace std;
void main()
{
int a[10],i,j,t;
cout<<"输入10个数:";
for(i=0;i<10;i++)
cin>>a[i];
for(i=0;i<10;i++)
{
for(j=0;j<9 - i;j++)
if(a[j]>a[j+1])
{
t=a[j+1];
a[j+1]=a[j];
a[j]=t;
}
}
for(i=0;i<10;i++)
cout<<a[i] << " ";
}
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(9)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式