文章目录

  • 文档视频讲解链接地址
  • 5.2 冒泡排序

文档视频讲解链接地址

  1. 腾讯课堂链接 : 39_数组_冒泡排序算法

5.2 冒泡排序

  1. 冒泡排序的由来

    • 冒泡排序的名字是因为元素排序的过程像水中的气泡一样一个一个的浮出水面,元素也一个一个从大到小(从小到大)的排序完成。
  2. 算法思想

    • 两两相邻的元素进行比较,如果前面元素大于后面元素就交换两个元素的位置,最终的结果是最大的一个元素移动到了最后的位置。 我们暂称这个过程为冒泡。
    • 如果有n个元素那么[冒泡操作]重复n-1次即可排序完成。
  3. 下图演示冒泡排序过程

  4. 7个数的冒泡排序分析过程如下图

  5. 7个数的冒泡排序的模型

    * * * * * * *
    * * * * * *
    * * * * *
    * * * *
    * * *
    * *
    *
    
  6. 冒泡排序的伪代码

    for(int i=0; i<N-1; i++)   //  外层控制排序次数 , 需要N-1次, N是有多少个数
    {for(int j=0; j<N-1-i; j++) // 内层控制每次排序比较次数{if( a[j] > a[j+1]){temp   = a[j];a[j]   = a[j+1];a[j+1] = temp;}}
    }
    
  7. 实例53
    从键盘输入7个int类型参数,存放到数组中,进行从大到小排序。

    • 源文件:
    01-cbase\53-maopao.c
    
    • 源代码:
    #include <stdio.h> #define  N   7 int main(int argc, char const *argv[])
    {int a[N]={0};for(int i=0;i<N;i++){printf("请输入第%d个数>:",i+1);scanf("%d",&a[i]);}printf("冒泡排序前数组的内容为 >:"); for(int i=0;i<N;i++){printf("%d ",a[i]); }printf("\n");for(int i=0;i<N-1;i++) // 外层循环控制排序的次数 , {for(int j=0,t=0;j<N-1-i;j++) // 内层循环控制每一次排序需要比较的次数 {if(a[j]> a[j+1])  // 如果a[j] 大于 a[j+1], 则交换两者之间的值{t = a[j]; a[j] = a[j+1]; a[j+1]= t;}}}printf("冒泡排序后数组的内容为 >:"); for(int i=0;i<N;i++){printf("%d ",a[i]); }printf("\n");return 0;
    }
    • 运行结果:
    // if(a[j] > a[j+1])  从小到大的排序
    请输入第 1 个数 >:12
    请输入第 2 个数 >:7
    请输入第 3 个数 >:8
    请输入第 4 个数 >:90
    请输入第 5 个数 >:234
    请输入第 6 个数 >:85
    请输入第 7 个数 >:90
    数组的内容为:12 7 8 90 234 85 90
    排序的内容为:7 8 12 85 90 90 234// if(a[j] < a[j+1])  从大到小的排序
    请输入第 1 个数 >:12
    请输入第 2 个数 >:7
    请输入第 3 个数 >:8
    请输入第 4 个数 >:90
    请输入第 5 个数 >:234
    请输入第 6 个数 >:85
    请输入第 7 个数 >:90
    数组的内容为:12 7 8 90 234 85 90
    排序的内容为:234 90 90 85 12 8 7
    

第5章 C语言的冒泡排序 (二)相关推荐

  1. 《Oracle从入门到精通》读书笔记第四章 SQL语言基础之二

    4.7 事务处理 4.7.1 事务概述 事务的4种属性:acid (1)原子性(atomic):事务是一个整体的工作单元,要么全部执行,要么全部取消. (2)一致性(consistency):所有的数 ...

  2. java语言定义一个具备栈功能的类_Java学习笔记 第二章 Java语言基础

    第二章 JAVA语言基础 一.关键字 1.关键字的定义和特点 定义:被Java语言赋予了特殊含义的单词 特点:关键字中所有的字母都为小写 2.用于定义数据类型的关键字 c;ass  interface ...

  3. 第1章 Java语言概述

    第1章 Java语言概述 声明 0. Java语言应用场景 1. 软件开发介绍 2. 计算机编程语言介绍 3. Java语言概述 4. Java程序运行机制及运行过程 5. Java的环境搭建  5. ...

  4. 数据结构源码笔记(C语言):二叉平衡树的相关操作算法

    //二叉平衡树的相关运算 #include<stdio.h> #include<malloc.h> #include<string.h>typedef char I ...

  5. input自适应_【正点原子FPGA连载】第十一章基于OV5640的自适应二值化实验-领航者ZYNQ之HLS 开发指南...

    1)摘自[正点原子]领航者ZYNQ之HLS 开发指南 2)平台购买地址:https://item.taobao.com/item.htm?&id=606160108761 3)全套实验源码+手 ...

  6. 《Go语言圣经》学习笔记 第一章 Go语言入门

    Go语言圣经学习笔记 第一章 Go语言入门 目录 Hello, World 命令行参数 查找重复的行 GIF动画 获取URL 并发获取多个URL Web服务 本章要点 注:学习<Go语言圣经&g ...

  7. Web前端开发笔记——第三章 CSS语言 第四节 CSS列表、表格样式

    目录 一.CSS列表样式 (一)设计列表项前标志类型 (二)设计列表项前标志位置 (三)设计列表项图片 (四)设计整体列表属性 二.CSS表格样式 (一)设计表格大小 (二)设计表格边框 (三)奇偶选 ...

  8. Web前端开发笔记——第二章 HTML语言 第四节 超链接标签

    目录 前言 一.超链接标签 (一)链接其它子网页 (二)链接其它站点 (三)虚拟超链接 二.从当前页面链接到指定位置 三.链接的访问情况 四.在新窗口中打开链接 例题 结语 前言 本节介绍超链接标签即 ...

  9. 《C++应用程序性能优化::第二章C++语言特性的性能分析》学习和理解

    <C++应用程序性能优化::第二章C++语言特性的性能分析>学习和理解 说明:<C++应用程序性能优化> 作者:冯宏华等 2007年版.最近出了新版,看了目录,在前面增加了一章 ...

最新文章

  1. golang 读写文件的四种方式
  2. 线性代数学习笔记(几何版)
  3. python from import 路径_python from...import *
  4. Asp.Net MVC 页面代码压缩筛选器-自定义删除无效内容
  5. RISC-V学习资料:《手把手教你设计CPU——RISC-V处理器》
  6. Windows10电脑线 下hosts文件地址
  7. 数据库并发抢红包_Redis悲观锁解决高并发抢红包的问题
  8. Codeforces Global Round 3(A-D)
  9. oc传参数给js_一道面试题引发关于 js 隐式转换的思考
  10. 读书笔记《Unix编程艺术》一
  11. 反编译PyInstaller打包后的exe为py源码
  12. [NOIP2016 提高组] 玩具谜题
  13. 学习笔记---高等数学前置知识---约分、通分
  14. 纯纯的爬虫知识,python scrapy 下载中间件知多少
  15. graphics.h头文件图形绘画详解(史上最详细)
  16. 在衡量欧洲的政治意识形态时,调查规模的微小变化可能会很重要
  17. 房租大涨?Python6个维度,数万条数据帮你揭穿
  18. 【测试报告】模板:功能测试报告
  19. 广电U点家庭服务器wifi信号差怎么办,智能电视Wifi信号不好?不用急,我教你5招轻松解决!...
  20. 另一个jar包引不了_佛说:失去是另一种拥有(醍醐灌顶,发人深思!)

热门文章

  1. Java 操作SSH2实现远程执行linux命令
  2. ManualResetEvent用法详解
  3. 2020CCPC 绵阳 7-4 Defuse the Bombs(二分)
  4. IDE中使用package打包出现java.lang.TypeNotPresentException: Type org.springframework.boot.maven.RepackageMoj
  5. Windows每天定时启动应用程序
  6. linux系统 安装hp驱动怎么安装,Linux下安装HP打印机的驱动程序
  7. R语言svm支持向量机多元回归预测
  8. 数据结构 之 无向连通图
  9. C++中的随机数函数(
  10. 服务器应用程序不可用的问题