目录
从后往前,两两比较相邻元素的值,若为逆序,则交换它们的值,直到全部比较完。
1、有以下序列,我们要将其进行冒泡排序将其变为升序序列。

2、我们从后往前依次对比,比较27和49,发现49大于27,正序,所以不用交换位置

3、然后比较13和27,发现27大于13,正序,所以不用交换位置

4、比较13和76,13小于76,交换它们的值

5、比较13和97,13小于97,交换它们的值

6、比较13和65,13小于65,交换它们的值

7、比较13和38,13小于38,交换它们的值

8、比较13和49,13小于49,交换它们的值

9、最后完成第一轮的对比

10、第一轮对比我们把序列中最小的值放到了最前面,所以下一次循环就不用再对比13了,最终模仿上面进行5轮交换后,得到最终的升序序列。

- #include "bits/stdc++.h"
- using namespace std;
-
- void BubbleSort(int a[],int n){
- int temp;
- for (int i = 0; i < n; ++i) {//设置对比的边界
- for (int j = n-1; j > i ; --j) {//从后往前比较相邻的两个数
- if (a[j]-1]){//若逆序则交换
- temp = a[j];
- a[j] = a[j-1];
- a[j-1] = temp;
- }
- }
- }
- }
-
- int main(){
- int count,arr[10];
- scanf("%d",&count);//输入数组长度
- for (int i = 0; i < count; ++i) {
- scanf("%d",&arr[i]);//输入数组
- }
- BubbleSort(arr,count);//调用排序函数
- for (int i = 0; i < count; ++i) {
- printf("%d ",arr[i]);//输出数组
- }
- return 0;
- }


