此文章我已在洛谷博客发布,不算抄袭

什么是冒泡排序

冒泡排序(Bubble Sort)也是一种简单直观的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢"浮"到数列的顶端。

这段话引用自菜鸟教程

冒泡排序的基本思想

重复地走访要排序的元素列,依次比较两个相邻的元素,如果他们的顺序错误就把他们交换过来。

走访元素的工作要重复地进行,直到没有相邻元素需要交换时,说明全部元素已经排序完成。

走访的元素———比作是一个“气泡”,“气泡“一步一步向上翻滚,完成排序。

冒泡排序的可视化动画

代码展示

从大到小排序

#inlcude <iostream>
using namespace std;
int main(){
int a[101];
int n;
cin>>n;
for(int i = 1;i<=n;i++){
cin>>a[i];
}
//每趟排好一个数字,第一趟结束把最大值排好到最后一位
for(int k = 1;k <= n-1;k++){
for(int i=1;i<=n-k;i++){
if(a[i]>a[i+1]){//顺序错误
swap(a[i],a[i+1]);
}
}
}
for(int i=1;i<=n;i++){
cout<<a[i]<<" ";
}
}

从小到大排序

#inlcude <iostream>
using namespace std;
int main(){
int a[101];
int n,flag;
cin>>n;
for(int i=1;i<=n;i++){
cin>>a[i];
}
//一共n-1趟
for(int k=1;k<=n-1;k++) {
//每趟排好一个数字,第一趟结束把最大值排好到最后一位
flag=0;
for(int i=1;i<=n-k;i++){
if(a[i]>a[i+1]){//顺序错误
swap(a[i],a[i+1]);
flag=1;
}
}
if(flag==0){ //这趟排序中没有出现交换
break;//说明已经排好序了,break终止循环
}
}
for(int i=1;i<=n;i++){
cout<<a[i]<<" ";
}
return 0;
} }

C++冒泡排序简单讲解的更多相关文章

  1. FTP的搭建与虚拟目录作用<之简单讲解>

    操作系统:win7 VS2010编写WebService与在IIS的发布<之简单讲解>中我已经说了IIS安装与使用,不明白的可以跳过去看. 1.添加FTP站点 2. 3. 4. 5. zq ...

  2. WeX5的简单介绍及UI的简单讲解

    WeX5的简单介绍及UI的简单讲解 (2016-01-13 14:49:05) 标签: it 分类: WeX5的初步自学 一.WeX5的简单讲解 1.WeX5是前端快速开发框架,可开发跨端运行应用.是 ...

  3. 简单讲解iOS应用开发中的MD5加密的相关使用

      简单讲解iOS应用开发中的MD5加密的相关使用   作者:文顶顶 字体:[增加 减小] 类型:转载 时间:2015-12-19 我要评论 这篇文章主要介绍了iOS应用开发中的MD5加密的相关使用, ...

  4. Android事件总线分发库EventBus3.0的简单讲解与实践

    Android事件总线分发库EventBus的简单讲解与实践 导语,EventBus大家应该不陌生,EventBus是一款针对Android优化的发布/订阅事件总线.主要功能是替代Intent,Han ...

  5. DES加解密 cbc模式 的简单讲解 && C++用openssl库来实现的注意事项

    DES cbc是基于数据块加密的.数据块的长度为8字节64bit.以数据块为单位循环加密,再拼接.每个数据块加密的秘钥一样,IV向量不同.第一个数据快所需的IV向量,需要我们提供,从第二个数据块开始, ...

  6. thinkphp内置标签简单讲解

    thinkphp内置标签简单讲解 1.volist循环 name 需要遍历的数据 id 类似于foreach中 value offset 截取数据起始位置 length 截取数据的个数 mod 奇偶数 ...

  7. 关于SI4432的问题简单讲解

    对于SX1278 和SI4432的对比性,下面为大家展示对比参数: 由此可以看出的SI4432虽然跟SX1278有部分地方不同,但是整体来说还是差别不大,各有各的长处和短处,性价比上个人还是觉得SI4 ...

  8. 常用函数式接口与Stream API简单讲解

    常用函数式接口与Stream API简单讲解 Stream简直不要太好使啊!!! 常用函数式接口 Supplier<T>,主要方法:T get(),这是一个生产者,可以提供一个T对象. C ...

  9. SpringBoot切面Aop的demo简单讲解

    前言 本篇文章主要介绍的是SpringBoot切面Aop的demo简单讲解. SpringBoot Aop 说明:如果想直接获取工程那么可以直接跳到底部,通过链接下载工程代码. 切面(Aop) 一.概 ...

  10. GIT Bash 简单讲解-git如何推/拉代码

    GIT Bash 简单讲解 一.            注册/登录GIT账号 注册(或者登录) GitHub地址:https://github.com/ 注册不做详细的讲解,按照注册指示进行注册就可以 ...

随机推荐

  1. mybatis的xml中#{}和${}区别

    #{}表示一个占位符号,通过#{}可以实现preparedStatement向占位符中设置值,自动进行java类型和jdbc类型转换,#{}可以有效防止sql注入.初步编译后的sql语句是" ...

  2. 【机器学习】搞清楚机器学习的TP、FN、FP、TN,查全率和查准率,PR曲线和ROC曲线的含义与关系

    最近重新学习了一下机器学习的一些基础知识,这里对性能度量涉及到的各种值与图像做一个总结. 西瓜书里的这一部分讲的比较快,这些概念个人感觉非常绕,推敲了半天才搞清楚. 这些概念分别是:TP.FN.FP. ...

  3. 002基本的Dos命令

    002基本的Dos命令 1.开启Dos控制台的几种方式 几种打开CMD的方式: 直接在菜单中搜索"命令提示符". Win+R,输入cmd.(推荐) 在任意文件夹下面,按住Shift ...

  4. error check

    #define SYSTEM_PRTCT_NOERR 0 #define SYSTEM_PRTCT_COVER (1 << 0) /* */#define SYSTEM_PRTCT_LPH ...

  5. Strimzi-Kafka-Operator外围小记

    Strimzi-Kafka-Operator 从不同的角度看下Operator解决的问题 Kafka管理Operator-https://github.com/strimzi/strimzi-kafk ...

  6. 盘点10个最受欢迎IntelliJ IDEA主题,必有一款适合你!

    选择一款适合自己的主题,这样每天工作才不会累!下面给大家精选了一批优秀的主题,并配上案例截图.如果有你喜欢的,那就赶紧去下载吧! Darcula 这是IntelliJ IDEA默认的暗色主题,适合长时 ...

  7. Java笔记第十二弹

    Lambda表达式的标准格式 三要素:形式参数.箭头.代码块 格式:(形式参数)->(代码块) 形式参数:如果有多个参数,参数之间用逗号隔开:如果没有参数,留空即可 ->代表指向动作 La ...

  8. 声网 VQA:将实时互动中未知的视频画质用户主观体验变可知

    在实时互动场景中,视频画质是影响观众体验的关键指标,但如何实时评价视频的画质一直是个行业难题,需要将未知的视频画质用户主观体验变成可知. 未知的部分往往是最需要攻克的,声网也一直在持续探索符合实时互动 ...

  9. Go语言:利用 TDD 驱动开发测试 学习结构体、方法和接口

    环境安装: (新手向)在Linux中使用VScode编写 "Hello,world"程序,并编写测试-Ubuntu20.4 上一篇相关随笔: Go语言:利用 TDD 测试驱动开发帮 ...

  10. 获得New Bing资格后,在Ubuntu环境下使用New Bing

    技术背景 如今基于GPT-4的New Bing,结合搜索引擎的功能,可以说已经达到了非常高的智力水平.虽说ChatGPT的出现打击了很多的行业,但是对我们来说也未必不是一种机遇.合理的使用ChatGP ...