冒泡排序是最基本的算法, 那究竟什么是冒泡排序呢?
冒泡排序 Bubble Sort
1.什么是排序
排序就是将一组数据按照特定规则(如升序或降序)重新排列的过程。这样更加便于我们对数据加工和处理。说人话, 排序就是把无序的数据变得更有规律.
2.为什么叫冒泡排序
想象一下, 家里在用锅烧水, 水的度数越来越高, 沸腾时, 一个个的泡泡冒了出来了. 在计算机中也是一个道理,要让 最大的数次大的数一个一个的冒出来.
冒泡排序就是在两个相邻的数据中比较并交换数据的位置来实现有规律的排序的.
3.在计算机中如何实现冒泡排序
(1)理清思路
如下图, 将 8, 6, 11, 7 进行冒泡排序
第一步:8 > 6 交换
第一步:8 < 11 不交换
第一步:11 > 7 交换
我们可以发现第一轮冒泡后得到 6, 8, 7, 11. 6 < 8, 8 > 7, 7 <11
所以一轮冒泡并不可以直接结束. 但我们可以保证的是, 将现有最大的数移到了最后面。这个最大的数就是泡泡,让这个泡泡冒到最后。
第1次冒泡 将第1大的数移好了
第2次冒泡 将第2大的数移好了
第3次冒泡 将第3大的数移了
第n-1次冒泡 将第n-1大 (倒数第二大) 的数移好了
再到第n次时, 只剩下一个数了, 所以不用冒泡. 由此得出冒泡的边界值是 0 ~ n - 1.
(2)实现代码(n个数排序)
#include<iostream> #include<cmath> using namespace std; int main() { int a[505]; //用来存储需要进行冒泡的数据 int n; //代表数据的个数 cin>>n; //输入n for(int i = 0; i <= n - 1; i++) //循环输入需要冒泡的数据 { cin>>a[i]; } for(int i = n; i >= 2; i--) { for(int j = 0; j < i - 1; j++) { if(a[j] > a[j+1]) //如果该数大于后数 { swap(a[j],a[j+1]); //交换两数的位置 } } } for(int i = 0; i < n; i++) //循环输出冒泡完的数据 { cout<<a[i]; } return 0; //结束 }