c语言冒泡排序详解(分析每一步,附代码)
冒泡排序(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语言冒泡排序详解(分析每一步,附代码)相关推荐
- linux 进程间通信 dbus-glib【实例】详解一(附代码)(d-feet工具使用)
linux 进程间通信 dbus-glib[实例]详解一(附代码)(d-feet工具使用) linux 进程间通信 dbus-glib[实例]详解二(上) 消息和消息总线(附代码) linux 进程间 ...
- 利用jquery操作ajax,利用jquery对ajax操作,详解原理(附代码)
1.jQuery load() 方法 jQuery load() 方法是简单但强大的 AJAX 方法. load() 方法从服务器加载数据,并把返回的数据放入被选元素中. 语法: $(selector ...
- 一文详解立体匹配(附代码)
作者丨cc.fy@知乎 来源丨https://zhuanlan.zhihu.com/p/458589977 编辑丨计算机视觉life 双目匹配 在双目匹配的范畴里,本次内容主要局限在以下两个小的部分: ...
- java逆向工程_JAVA语言:详解MyBatis逆向工程[Java代码]
本文主要向大家介绍了JAVA语言的MyBatis逆向工程,通过具体的内容向大家展示,希望对大家学习JAVA语言有所帮助. 1.什么是mybatis逆向工程 在使用mybatis时需要程序员自己编写sq ...
- 【卷积神经网络结构专题】一文详解LeNet(附代码实现)
关注上方"深度学习技术前沿",选择"星标公众号", 资源干货,第一时间送达! 近期,公众号将推出卷积神经网络结构系列专题文章,将深入浅出的为大家介绍从1998年 ...
- Java 八大排序之冒泡排序详解
Java 八大排序之冒泡排序详解 分析冒泡排序 数组[24,69,80,57,13] 第1轮排序:目标把最大数放在最后 第1 次比较:[24,69,80,57,13] 第2 次比较:[24,69,8 ...
- c语言菜单选择如何用字符形式,【创客天地】计算机二级C语言、VB考试详解分析...
原标题:[创客天地]计算机二级C语言.VB考试详解分析 01 马上就要迎来计算机二级考试了,你准备好了吗?今天助手君准备了一点C语言干货,希望对即将考试的你有所帮助.(上期刚刚推了office,有需要 ...
- C语言之详解#ifdef等宏
C语言之详解#ifdef等宏 这几个宏是为了进行条件编译.一般情况下,源程序中所有的行都参加编译.但是有时希望对其中一部分内容只在满足一定条件才进行编译,也就是对一部分内容指定编译的条件,这就是&qu ...
- c语言 宏教程 pdf,C语言之详解_ifdef等宏.pdf
C 语言之详解 #ifdef 等宏 指令用途 #空指令,无任何效果 #include 包含一个源代码文件 #define 定义宏 #undef 取消已定义的宏 #if 如果给定条件为真,则编译下面代码 ...
最新文章
- 出道即巅峰,掀起AI领域巨浪的GPT-3,被过誉了吗?
- 第三章.数据类型和运算符
- Java中常见的几种类型转换
- 计算机网络第七次笔记
- ArcGIS AO中控制图层中要素可见状态的总结
- java sqlserver 死锁_sqlserver数据库发生死锁处理
- TensorFlow 学习(十)—— 工具函数
- REVERSE-PRACTICE-BUUCTF-19
- 前端面试1:CSS布局
- python 天勤 金叉 编程代码_Python量化策略开发框架,固定的套路、突破策略的福音...
- 一直被唱衰的 Java 没“死”,却惨遭“忽视”!
- java更改管理员的密码_java-第十章-类和对象-更改管理员密码
- 思源黑体(魅族)、方正兰亭(小米)、冬青黑体(锤子)比较
- 树莓派4B安装配置LibreELEC并连接到三星电视
- English总结(二)--英语常用单词
- python中int函数的用法浅析_python中int函数怎么用,
- 现代轻奢风格装修讲解
- JSHTMLCSS实现双色球抽奖
- 解决C#读取文本文件乱码
- Vue开发之基础路由