新手上路,如果有讲的不好的地方,请指正。
如有任何疑问,欢迎评论留言!
1.冒泡排序基础用法
运用 if 语句a和b的判断大小,然后将大的数值赋值给a,小的数值赋值给b,其实也就是简单的调换顺序的方法。
#include<iostream>
using namespace std;
int main()
{
//调换位置
int a,b,c;
cout<<"请输入两个整数a和b:";
cin>>a>>b;
cout<<"调换位置前a="<<a<<endl<<"调换位置前b="<<b<<endl;
if(b>a) // 如果 b 大于 a
{
c=a; // 将输入的数值 a 赋值给一个空的变量c
// 此时 c 里面存了 a 的值
a=b; // 再将 b 的值赋给 a ,此时 a 里存的是 b 的值
b=c; // 由于前面已经将 a 赋给了 c ,现在再将 c 赋值给b
// 实现了 a 和 b调换位置
}
cout<<"调换位置后 a="<<a<<endl<<"调换位置后 b="<<b<<endl;
return 0;
}
运行结果如下:
2.冒泡排序在数组中的用法
其实也就时简单的调换位置的代码加上循环来使用
详细情况请看代码中的注释
#include<iostream>
using namespace std;
int main()
{
// 冒泡排序
int a[10],n; // 变量 n 和前面的c一样,充当空的变量
for(int i=0;i<10;i++)
{
cin>>a[i]; // 这一块很好理解,就是循环 10 次,写入 10 个数据
}
for(int j=0;j<9;j++)
{
for(int x=0;x<9;x++) // 这里我们只用一次for循环的话,就会出现只吧最小值调到最后面
{
if(a[x+1]>a[x]) // 例如按顺序输入1-10,一次循环发现 2>1,就将2 和 1 调换了位置,此时变成了 2 1 3 4......10
{ // 第二次循环发现 3>1 ,就将1和3调换了位置,变成了 2 3 1 4 5 ......10
n=a[x]; // 第三次循环发现 4>1 ,就将1和4调换了位置,变成了 2 3 4 1 5 6......10
a[x]=a[x+1]; // 以此类推,到第九次循环,1到了最后面,变成了 2 3 4 5 6 7 8 9 10 1
a[x+1]=n; // 所以我们要在这外面再次套上一个for循环,让里面这个循环执行九次
} // 也就是说当j=1时将而调到 1 的前面,即 3 4 5 6 7 8 9 10 2 1
} // 以此类推,当它执行到最后次时,便完成了从大到小的排序
}
for(int m=0;m<10;m++) // 然后再将它们打印出来,显示为从大到小的排序
{
cout<<a[m]<<" ";
}
return 0;
}