003 冒泡排序法的详细实现过程——“C”

2023-11-15

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

一、冒泡排序法是什么?

冒泡排序是一种交换排列,基本思想是比较前后的关键字,如果反序则交换,直到有序为之


 

二、实现过程

1.过程分析

代码如下(示例):

  void  Bubble_sort(int arr[], int sz)
 {
     int i = 0; 
     int j = 0;
     int temp;
     for (i = 0; i < sz - 1; i++)   //i<sz-1   ->从小到大排列,每进行一次冒泡排序法就会先把最大值排到最后,i表示一共进行多少次冒泡排序法
     {
         for (j = 0; j < sz - 1 - i; j++)       //一次冒泡排序法的交换次数
         { 
             if (arr[j + 1] < arr[j])   //比较前后元素的大小,反序则交换,有序不变
             {    
                 temp = arr[j];                //利用赋值达到从小到大排列的效果
                 arr[j] = arr[j + 1];           
                 arr[j + 1] = temp;
             }
         } 
     }
     return 0;
 } 
int main() 
{
    int i = 0;
    int arr[7] = { 5,4,6,3,7,1,2 };
    int sz;            //定义数组的大小
    sz = sizeof(arr) / sizeof(arr[0]);   //计算数组的大小
    Bubble_sort(arr, sz);                //自定义一个冒泡排序函数
        for (i = 0; i< 7; i++)
        {
        printf("%d ", arr[i]);  
        }
    return 0;
}

实现一次冒泡排序的过程是什么呢?

事不宜迟,上图

此时7被固定

-------------------------------------------------------------------------------------------------------------------------

每一次的冒泡排序过程都会将一个最大的元素固定在末尾

所以一共要进行几次冒泡排序才能将数组中的元素从小到大排列呢

——>即i=sz-1  由于最后每次的冒泡排序将最大的元素放在末尾,最后一次排序时剩余一个最小的数,此时程序结束

此时6被固定

-------------------------------------------------------------------------------------------------------------------------

 此时5被固定,虽然已经排完了,但是程序还没有run完哦

-------------------------------------------------------------------------------------------------------------------------

此时4被固定

 -------------------------------------------------------------------------------------------------------------------------

 

此时3被固定

 ---------------------------------------------------------------------------------------------

此时2被固定,剩余1,程序结束

---------------------------------------------------------------------------------------------------------------------------------

——>ok,现在一共进行了6次冒泡排序法,即(数组大小-1)sz-1次

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

003 冒泡排序法的详细实现过程——“C” 的相关文章

  • coverage es6覆盖率解决方法

    该文章整理于2017年 当时为解决在GridManager2 3 0版本中ES6替换时遇到的问题 原文如下 替换之后发现 原先的测试覆盖率从72 下降至 24 通过 coverage html 在本地测试后发现 覆盖目标文件使用的为 bab

随机推荐

  • IDEA全局替换

    替换 有全局替换 和 当前文件内容替换 全局 ctrl shift r 在路径中替换 指的是在选定的目录下或者类包下 查找要被替换的字符 当前文件内容 ctrl r 当前文件内容替换 指的是在当前打开的文件中替换匹配的字符 只操作一个文件
  • 用python画二元函数图像

    利用Python的Matplotlib库可以实现二元函数的可视化 以下以一段代码说明 第三方库需求 Matplotlib 数据可视化 numpy 数学计算库 代码 import matplotlib pyplot as plt import
  • 控制反转 的种类

    之前对控制反转的定义和解释都不是很清晰 最近翻书发现在 Pro Spring 5 免费电子版在文章最后 有一段非常不错的解释 记录一下 有道翻译贴出来方便查看 如有请直接跳过中文 看后面的原文 控制反转的类型 控制反转的类型您可能想知道为什
  • CMake:消灭error(一)

    使用CMake 遇到的第一个错误 CMake Error CMake can not determine linker language for target hello CMake Error Cannot determine link
  • 微信小程序 首页弹出用户协议

    话不多说 直接上代码 wxml
  • 经典神经网络总结

    1 LeNet 5 3层卷积 2层全连接 第一个CNN网络 由 L e C u n LeCun LeCun提出 用于手写数字识别 1 1 网络结构 1 2 各层参数详解 0 INPUT层 输入层 输入图像
  • Python 自动发送邮件实战案例,人人都可以学会

    自动发送邮件能应用于许多场景 比如我想要知道股票策略中的股票池是否有实时的更新 这时候如果再拉一遍数据 跑一遍脚本 实在是太浪费时间了 为什么不把这一套流程放到服务器上 然后到点自动运行并发送邮件呢 类似的应用场景还有很多 不仅仅是在股票策
  • Android系统启动流程

    Android系统启动流程学习 会对Android系统与Linux系统的关系有一个更深的理解 Android启动流程 Android启动时序图 Linux启动 开机过电 复位器件 执行Bootloader程序 arm中是uboot或者fas
  • 经历一些事,认清一些人

    你发现了吗 随着年龄的增长 我们身边的朋友没有变多 反而越来越少了 这是我们的交友能力逐渐在下滑吗 其实不然 这是因为随着经历的事情多了 我们具备了认清别人的能力 能够分辨哪些是生命中的过客 哪些是值得珍惜的挚友 1 高分美剧 后翼弃兵 中
  • 3D游戏设计——AR/MR技术

    HW12 AR小游戏设计 本次AR小游戏并没有给出什么要求 由于大作业实在太多了 所以这篇博客重点在于怎么配置环境 并实现图片识别的功能 虚拟按键的玩法暂时没有想到什么好的点子 会在之后比较有空时详细设计 并补充完整 求TA手下留情 配置环
  • Bootstrap4 模态对话框示例

  • Java中"abc" instanceof Object返回结果

    返回结果 true instanceof 是Java的一个二元操作符 和 gt lt 是同一类的比较运算符 因为它由字母组成的 所以也是Java的关键保留字 它的作用是测试它左边的对象是否是它右边类的实例 返回boolean类型数据 abc
  • Android如何离线播放加密(HLS)m3u8视频——实现HLS缓存

    HTTP Live Streaming HLS 是苹果公司 Apple Inc 实现的基于HTTP的流媒体传输协议 可实现流媒体的直播和点播 主要应用在iOS系统 为iOS设备 如iPhone iPad 提供音视频直播和点播方案 它的工作原
  • MES制造执行系统的原理与实现

    前言 近些年来 我国已经涌现了大量的制造型企业 随着竞争的发展 对产品质量的要求越来越高 特别是在电子制造型的企业里 对于制造流程控制的要求不断提升 许多企业为了增强竞争力 不惜重金实施ERP 系统 以求缩减成本控制 缩短供货周期 但在内部
  • 微信小程序——操作数组

    1 数组 排序 过滤 求和 去重 乱序 let array sort 数组正序 array 5 4 3 2 1 console log array sort reverse 数组倒序 array 1 2 3 4 5 console log
  • 人工智能谓词逻辑——猴子摘香蕉问题

    案例 我们要实现以下步骤 让猴子得到香蕉 但是直接跳够不到 必须站在箱子上才能取到 这个案例共有以下几种情况 猴子香蕉箱子在同一处 猴子香蕉在同一处 香蕉箱子在同一出 还有三者均不在同一处 但不论是哪种情况 我们需要清楚一点就算是香蕉和猴子
  • CUDA Samples: image normalize(mean/standard deviation)

    以下CUDA sample是分别用C 和CUDA实现的通过均值和标准差对图像进行类似归一化的操作 并对其中使用到的CUDA函数进行了解说 各个文件内容如下 关于均值和标准差的计算公式可参考 http blog csdn net fengbi
  • 【Kettle从零开始】第八弹之Kettle变量参数传递介绍

    对于ETL参数传递是一个很重要的环节 因为参数的传递会涉及到业务数据是如何抽取 下面我为大家举例一个简单的需求 需求说明 需要抽取昨天的数据装载到目标表中 1 参数作用域 答 Kettle中参数大致可分为两类 一类是全局参数 一类是局部参数
  • Linus系统的详细安装教程:

    第一步 首先创建虚拟机 1 打开VMware 点击左上角新建虚拟机如下 2 选择相关选项 也可以选自定义 自定义完成下一步即可 如下图 3 选择 稍后安装操作系统 S 如下图 4 版本也可以选择其他的Red Hat版本 CentOS是Red
  • 003 冒泡排序法的详细实现过程——“C”

    提示 文章写完后 目录可以自动生成 如何生成可参考右边的帮助文档 文章目录 前言 一 冒泡排序法是什么 二 实现过程 1 图解 一次的冒泡排序 一 冒泡排序法是什么 冒泡排序是一种交换排列 基本思想是比较前后的关键字 如果反序则交换 直到有