冒泡排序(Bubble Sort),是一种计算机科学领域的较简单的排序算法。

它重复地走访过要排序的元素列,依次比较两个相邻的元素,如果顺序(如从大到小、首字母从Z到A)错误就把他们交换过来。走访元素的工作是重复地进行,直到没有相邻元素需要交换,也就是说该元素列已经排序完成。

这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端(升序或降序排列),就如同碳酸饮料中的气泡最终会上浮到顶端一样,故名“冒泡排序”。

一、基本思想:

相邻的两个元素进行比较,按照要求进行交换。
    升序:从小到大
    降序:从大到小

二、实现思路(以升序为例)
    第一趟排序:
    第一个元素和第二个元素进行比较,将较大的放在第二个位置上,然后第二个元素再个第三个元素进行比较,将较大的放在第三个位置上,依此类推,直到第一趟排序完成,最大的元素就在最后一个位置上了。
    第二趟排序:
    第一个元素和第二个元素进行比较,将较大的放在第二个位置上,然后第二个元素再个第三个元素进行比较,将较大的放在第三个位置上,依此类推,直到第二趟排序完成,第二大的元素就在倒数第二个位置上了。
    依此类推,直到整个数据有序。

三、代码详解

int main()
{int a[10] = {33, 22, 11, 44, 55, 66, 88, 99, 77, 10};int i, k, w;for (i = 0; i < (10-1); i++) //外层循环控制排序的次数,此处的-1是//因为最后一趟只有一个元素,不用比较了{for (k = 0; k < (10-1) - i; k++) //此处的-1是为了防止越界,//此处的-i是因为每趟都可以少比较一个元素{if (a[k] > a[k + 1])  //如果是降序 就将此处的 > 改成 < 即可{w = a[k];a[k] = a[k + 1];a[k + 1] = w;}}}for (i = 0; i < 10; i++)  //排序后打印{printf("%d ", a[i]);}return 0;
}

c语言冒泡排序详解(分析每一步,附代码)相关推荐

  1. linux 进程间通信 dbus-glib【实例】详解一(附代码)(d-feet工具使用)

    linux 进程间通信 dbus-glib[实例]详解一(附代码)(d-feet工具使用) linux 进程间通信 dbus-glib[实例]详解二(上) 消息和消息总线(附代码) linux 进程间 ...

  2. 利用jquery操作ajax,利用jquery对ajax操作,详解原理(附代码)

    1.jQuery load() 方法 jQuery load() 方法是简单但强大的 AJAX 方法. load() 方法从服务器加载数据,并把返回的数据放入被选元素中. 语法: $(selector ...

  3. 一文详解立体匹配(附代码)

    作者丨cc.fy@知乎 来源丨https://zhuanlan.zhihu.com/p/458589977 编辑丨计算机视觉life 双目匹配 在双目匹配的范畴里,本次内容主要局限在以下两个小的部分: ...

  4. java逆向工程_JAVA语言:详解MyBatis逆向工程[Java代码]

    本文主要向大家介绍了JAVA语言的MyBatis逆向工程,通过具体的内容向大家展示,希望对大家学习JAVA语言有所帮助. 1.什么是mybatis逆向工程 在使用mybatis时需要程序员自己编写sq ...

  5. 【卷积神经网络结构专题】一文详解LeNet(附代码实现)

    关注上方"深度学习技术前沿",选择"星标公众号", 资源干货,第一时间送达! 近期,公众号将推出卷积神经网络结构系列专题文章,将深入浅出的为大家介绍从1998年 ...

  6. Java 八大排序之冒泡排序详解

    Java 八大排序之冒泡排序详解 分析冒泡排序 数组[24,69,80,57,13] 第1轮排序:目标把最大数放在最后 第1 次比较:[24,69,80,57,13] 第2 次比较:[24,69,8 ...

  7. c语言菜单选择如何用字符形式,【创客天地】计算机二级C语言、VB考试详解分析...

    原标题:[创客天地]计算机二级C语言.VB考试详解分析 01 马上就要迎来计算机二级考试了,你准备好了吗?今天助手君准备了一点C语言干货,希望对即将考试的你有所帮助.(上期刚刚推了office,有需要 ...

  8. C语言之详解#ifdef等宏

    C语言之详解#ifdef等宏 这几个宏是为了进行条件编译.一般情况下,源程序中所有的行都参加编译.但是有时希望对其中一部分内容只在满足一定条件才进行编译,也就是对一部分内容指定编译的条件,这就是&qu ...

  9. c语言 宏教程 pdf,C语言之详解_ifdef等宏.pdf

    C 语言之详解 #ifdef 等宏 指令用途 #空指令,无任何效果 #include 包含一个源代码文件 #define 定义宏 #undef 取消已定义的宏 #if 如果给定条件为真,则编译下面代码 ...

最新文章

  1. 出道即巅峰,掀起AI领域巨浪的GPT-3,被过誉了吗?
  2. 第三章.数据类型和运算符
  3. Java中常见的几种类型转换
  4. 计算机网络第七次笔记
  5. ArcGIS AO中控制图层中要素可见状态的总结
  6. java sqlserver 死锁_sqlserver数据库发生死锁处理
  7. TensorFlow 学习(十)—— 工具函数
  8. REVERSE-PRACTICE-BUUCTF-19
  9. 前端面试1:CSS布局
  10. python 天勤 金叉 编程代码_Python量化策略开发框架,固定的套路、突破策略的福音...
  11. 一直被唱衰的 Java 没“死”,却惨遭“忽视”!
  12. java更改管理员的密码_java-第十章-类和对象-更改管理员密码
  13. 思源黑体(魅族)、方正兰亭(小米)、冬青黑体(锤子)比较
  14. 树莓派4B安装配置LibreELEC并连接到三星电视
  15. English总结(二)--英语常用单词
  16. python中int函数的用法浅析_python中int函数怎么用,
  17. 现代轻奢风格装修讲解
  18. JSHTMLCSS实现双色球抽奖
  19. 解决C#读取文本文件乱码
  20. Vue开发之基础路由

热门文章

  1. 大数据毕业设计 机器学习文本聚类系统 - 舆情分析
  2. Oracle入门(二)
  3. 2022管理类联考真题答案-文都管联院
  4. 使用npm命令启动http-server服务时指定端口
  5. 利用mkdocs部署静态网页至GitHubpages(更新版)
  6. c++自制锁机程序--两行代码
  7. CDH6.3整合Carbondata
  8. 《版式设计——日本平面设计师参考手册》目录—导读
  9. 红外成像与微光成像的区别
  10. 如何安全的修改win11用户名(微软账号登录,用户名会变成纯数字,好丑)