第八章 排序 四、冒泡排序

目录

 一、算法思想

二、例子

三、代码实现

四、验证

五、算法性能分析

注意:要分清楚交换次数和移动次数

六、总结


 一、算法思想

从后往前,两两比较相邻元素的值,若为逆序,则交换它们的值,直到全部比较完。

二、例子

1、有以下序列,我们要将其进行冒泡排序将其变为升序序列。

第八章 排序 四、冒泡排序_第1张图片

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

第八章 排序 四、冒泡排序_第2张图片

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

第八章 排序 四、冒泡排序_第3张图片

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

第八章 排序 四、冒泡排序_第4张图片

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

第八章 排序 四、冒泡排序_第5张图片

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

第八章 排序 四、冒泡排序_第6张图片

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

第八章 排序 四、冒泡排序_第7张图片

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

第八章 排序 四、冒泡排序_第8张图片

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

第八章 排序 四、冒泡排序_第9张图片

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

第八章 排序 四、冒泡排序_第10张图片

三、代码实现

#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]

四、验证

第八章 排序 四、冒泡排序_第11张图片

五、算法性能分析

第八章 排序 四、冒泡排序_第12张图片

注意:要分清楚交换次数移动次数

六、总结

第八章 排序 四、冒泡排序_第13张图片

你可能感兴趣的:(数据结构学习,数据结构)