第八章 排序 四、冒泡排序

目录

一、算法思想

二、例子

三、代码实现

四、验证

五、算法性能分析

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

六、总结


一、算法思想

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

二、例子

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轮交换后,得到最终的升序序列。

三、代码实现

cpp 复制代码
#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]<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;
}

四、验证

五、算法性能分析

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

六、总结

相关推荐
wangjialelele15 分钟前
二刷C语言后,一万字整理细碎知识点
c语言·开发语言·数据结构·c++·算法·cpp
Stardep18 分钟前
算法入门21——二分查找算法——山脉数组的峰顶索引
数据结构·算法·leetcode
橘颂TA20 分钟前
【剑斩OFFER】算法的暴力美学——力扣 675 题:为高尔夫比赛砍树
数据结构·算法·c·结构与算法
是娇娇公主~22 分钟前
算法——【最大子数组和】
数据结构·c++·算法
季明洵43 分钟前
二分搜索、移除元素、有序数组的平方、长度最小的子数组
java·数据结构·算法·leetcode
Sheep Shaun1 小时前
深入理解AVL树:从概念到完整C++实现详解
服务器·开发语言·数据结构·c++·后端·算法
大猫子的技术日记1 小时前
Redis 快速上手:5 分钟掌握核心能力
数据结构·数据库·redis·缓存·持久化·pub/sub
云深麋鹿1 小时前
二.顺序表和链表
c语言·开发语言·数据结构·链表
历程里程碑2 小时前
Linux 2 指令(2)进阶:内置与外置命令解析
linux·运维·服务器·c语言·开发语言·数据结构·ubuntu
福楠2 小时前
C++ STL | set、multiset
c语言·开发语言·数据结构·c++·算法