初识C语言——冒泡排序法
目录
1.什么是冒泡排序?
2.冒泡排序的原理
1.什么是冒泡排序?
冒泡排序是一种经典的排序方法,在一组数据中,访问两个相邻的元素,如果元素不符合顺序就把它们交换位置,符合的话就不用交换位置,依此类推,直到所有元素都排好序列,就结束了,每个元素就像泡泡一样,根据大小的不同而冒到数组的不同一侧。
2.冒泡排序的原理
就比如说一组数据
要把它升序排出。
一次交换两个元素的位置,一趟就把一个元素的序列排好。
这是第二趟
第三趟
我们来比较一下这三趟。
第一趟需要交换9次,第二趟需要交换8次,第三趟需要交换7次,那么一共需要9趟。
用一个函数来实现冒泡排序。
#include<stdio.h>void Bubble_Sort(int arr[], int sz)
{int i = 0;for (i = 0; i < sz - 1; i++) //sz-1决定趟数。{int j = 0;for (j = 0; j < sz - 1 - i; j++) //sz-1-i决定冒泡的次数{if (arr[j] > arr[j + 1]){int tmp = arr[j];arr[j] = arr[j + 1];arr[j + 1] = tmp;}}}
}int main()
{int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };int sz = sizeof(arr) / sizeof(arr[0]);Bubble_Sort(arr, sz);int i = 0;for (i = 0; i < sz; i++){printf("%d ", arr[i]);}return 0;
}
写到这里,冒泡排序的一个算法就完成了。接下来再来提供一个优化版的。
#include<stdio.h>void Bubble_Sort(int arr[], int sz)
{int i = 0;for (i = 0; i < sz - 1; i++) //sz-1:最后一趟剩余一个元素,该堂冒泡可以省略。{int isChange = 0;int j = 0;for (j = 0; j < sz - 1 - i; j++){if (arr[j] > arr[j + 1]){int tmp = arr[j];arr[j] = arr[j + 1];arr[j + 1] = tmp;isChange = 1; //如果本次冒泡进行数据交换了,说明本次数据是无序的;isChange为1。}if (!isChange) //如果本次冒泡中,元素没有进行交换,return; //说明数据已经有序了,后面的冒泡就不用再进行了。}}
}int main()
{int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };int sz = sizeof(arr) / sizeof(arr[0]);Bubble_Sort(arr, sz);int i = 0;for (i = 0; i < sz; i++){printf("%d ", arr[i]);}return 0;
}
这种优化也算是提高了效率。
今天的分享就到这里了,有什么建议尽管提出来。
初识C语言——冒泡排序法相关推荐
- 冒泡排序c java c,冒泡排序,c语言冒泡排序法代码
冒泡排序,c语言冒泡排序法代码 冒泡排序 冒泡排序(Bubble Sort),是一种计算机科学领域的较简单的排序算法. 它重复地走访过要排序的元素列,依次比较两个相邻的元素,如果顺序(如从大到小.首字 ...
- C语言——冒泡排序法
C语言--冒泡排序法 问题描述: 1, 3, 2, 6, 4, 5, 9, 8, 10, 7进行从小到大排序 代码: # include <stdio.h>int main() {int ...
- c语言冒泡排序法代码(c语言冒泡排序法代码讲解)
求一个C语言冒泡排序法的简单程序怎么办? 下一趟排序开始时,R[1..lastExchange-1]是有序区,R[lastExchange..n]是无序区.这样,一趟排序可能使当前有序区扩充多个记录, ...
- c语言冒泡排序项目总结,C语言冒泡排序法心得
记得以前在大学里学习c语言的时候,刚开始是很吃力的. 入门级别的算法中有个叫冒泡排序法,也有称为气泡排序法.那时候刚接触它就对它的名字特别感兴趣,因为觉得很有意思.好了,废话不多说了,我们先一起简单回 ...
- c语言冒泡排序(c语言冒泡排序法详解)
请讲解下C语言的冒泡排序法 冒泡法,就是通过多次循环排序的一种方法. 第一次循环,让最小(最大)的值浮到第一位, 第二次循环,让剩余的数字中最小(最大)浮到第二位 依次类推. 这种方法就像水泡上浮一样 ...
- C语言冒泡排序法,用函数形式实现。
冒泡排序法 释疑:冒泡排序法是将数组中的元素依次从小到大(Also 从大到小)进行排序下来.请看如下操作! 共有4个数,如 2,4,1,3. 进行N-1次循环,每一次循环中需进行N-1-i 次交换 i ...
- c语言冒泡排序法6,C语言的冒泡排序法
数字的排序: #include"stdafx.h" #include #define SIZE 10 int main() { int a[SIZE] = { 12 ,43,9,1 ...
- (C语言)冒泡排序法
本题来自pintia.cn 题目要求 代码 测试结果 PTA测试结果 题目要求 将N个整数按从小到大排序的冒泡排序法是这样工作的:从头到尾比较相邻两个元素,如果前面的元素大于其紧随的后面元素,则交换它 ...
- c语言冒泡排序法程序填空_【C语言】两种方式实现冒泡排序算法
题目要求 编写一个C语言程序,实现基本的冒泡排序算法. 算法 冒泡排序,用一句话来总结: 一组数中,相邻的两个数进行比较.交换,将最大(小)数交换至尾(首)部,即完成了一次冒泡排序 要想对N个数字进行 ...
最新文章
- python集合中的元素是否可以重复_python中集合中的元素是否可以重复
- unity值得推荐的网址
- ASP.NET3.5 企业级项目开发 -- 第二章(续) 数据访问层(DAL)的开发解决方案提出...
- 【高并发】面试官:讲讲高并发场景下如何优化加锁方式?
- 华为的JAVA面试题及答案(部分)
- 传统红色纹样图案背景|中式海报必备素材
- 为什么大多数私人企业无法做大做强?
- numpy.ndarray.flat/flatten 与 Spark 下的 flatMap
- 系统同传软件_语情快递 | 手语同传AI,你见过吗?
- 视频教程_Mastercam2017车削视频教程,数控车床编程视频教程,vericut车床仿真视频...
- 微信分身服务器验证失败咋办,微信好友验证发送失败原因分析及解决方法汇总...
- Caffe(12)--实现YOLOv2目标检测
- 荐书 | 5本数学科普让你不再“畏惧”数学,感受数学的内在美
- html自定义菜单按钮图片,editormd,markdown 自定义导航栏按钮
- ABP vNext 缓存使用
- cas-client单点登录客户端拦截请求和忽略/排除不需要拦截的请求URL的问题
- zzuli:1000从今天开始入坑C语言
- 转载:WVGA,QVGA,VGA,HVGA,WQVGA是什么意思?如何区别?
- 上善若水,水利万物而不争
- Word中设置不同页面的页眉不一样的方法(页脚、页码同理)
热门文章
- 我的世界服务器显示文字,我的世界服务器悬浮字体教程 | 手游网游页游攻略大全...
- 聚类dbi指数_聚类-K-Means
- aws php 上传文件 限制大小_php如何实现文件上传下载-PHP问题
- 笨办法学python 习题46-windows
- C/C++时间字符串和时间戳的相互转化
- 小波变换之尺度函数和小波函数
- VBA遍历文件夹下的所有文件
- Windows Server 2008 R2部署active directory服务器
- S32K144 CAN收发调试经验总结
- Collections详解