一、冒泡排序是什么?
冒泡排序的英文Bubble Sort,是一种最基础的交换排序。之所以叫做冒泡排序,因为每一个元素都可以像小气泡一样,根据自身大小一点一点向数组的一侧移动。
二、冒泡排序原理
每一趟只能确定将一个数归位。即第一趟只能确定将末位上的数归位,第二趟只能将倒数第 2 位上的数归位,依次类推下去。如果有 n 个数进行排序,只需将 n-1 个数归位,也就是要进行 n-1 趟操作。
而 “每一趟 ” 都需要从第一位开始进行相邻的两个数的比较,将较大的数放后面,比较完毕之后向后挪一位继续比较下面两个相邻的两个数大小关系,重复此步骤,直到最后一个还没归位的数。
三、代码实现
1. 输入数组
代码如下:
int n,i,t;
cin >> n;
int a[n];
for(i=0;i<n;i++)
{
cin >> a[i];
}
2. 开始排序
代码如下:
for(i=0;i<n;i++)
{
for(int j=0;j<n-i-1;j++)
{
if(a[j]>a[j+1])//比较相邻两个数大小,若前一个大于后一个,则交换
{
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
}
}
3. 输出结果
代码如下:
for(i=0;i<n;i++)
{
printf("%d ",a[i]);
}
四、完整代码
#include <iostream>
#include <cstdio>
using namespace std;
int main()
{
int n,i,t;
cin >> n;
int a[n];
for(i=0;i<n;i++)
{
cin >> a[i];
}
for(i=0;i<n;i++)
{
for(int j=0;j<n-i-1;j++)
{
if(a[j]>a[j+1])
{
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
}
}
for(i=0;i<n;i++)
{
printf("%d ",a[i]);
}
printf("\n");
return 0;
}