目录

1、常规的冒泡排序算法:

2、冒泡排序的优化:


1、常规的冒泡排序算法:

降序排列,小的数往下沉,大的数往上升;

升序排列,小的数在最上边,最大的数在最下边。

假设数组有n个数据,则无论最开始数组里面的数据是否为有序的都要进行n-1趟冒泡排序。

冒泡排序图解:

代码如下:

#include<stdio.h>
int main()
{int i, j, temp;int a[] = { 1,2,6,4,5,6,7,9,8 };int sz = sizeof(a) / sizeof(a[0]);printf("原始数据:\n");for (i = 0; i < sz; i++)printf("%d ", a[i]);for (i = 0; i < sz - 1; i++)//降序排列,即小的数往下沉,大的数往上升for (j = 0; j < sz - i - 1; j++)if (a[j] < a[j + 1])//如果将“<”改为">",则为升序,即,大的数往下沉,最大的数在最后面{temp = a[j];a[j] = a[j + 1];a[j + 1] = temp;}printf("\n排序后的数据是:\n");for (i = 0; i < sz; i++)printf("%d ", a[i]);return 0;
}

2、冒泡排序的优化:

优化后的冒泡排序,遇到已经是有序的数据,就会直接跳过这一趟冒泡排序进行下一趟,例如n-1趟的数据是有序的,则进行n-2趟冒泡排序,依此类推。

#include<stdio.h>
void bubble_sort(int arr[], int sz)
{//确定冒泡排序的趟数int i = 0;for (i = 0; i < sz - 1; i++){int flag = 1;//假设这一趟排序的数据已经有序//每一趟冒泡排序int j = 0;for (j = 0; j < sz - 1 - i; j++){if (arr[j] > arr[j + 1]){int temp = arr[j];arr[j] = arr[j + 1];arr[j + 1] = temp;flag = 0;//本趟排序的数据其实不完全有序}}if (flag == 1){break;}}
}int main()
{int arr[] = { 9,0,1,2,3,4,5,6,7,8 };int i = 0;int sz = sizeof(arr) / sizeof(arr[0]);//对arr进行排序,排成升序//arr是数组,我们对数组arr进行传参,实际上传递过去的是数组的首元素地址&arr[0]bubble_sort(arr, sz);//冒泡排序函数for (i = 0; i < sz; i++){printf("%d ", arr[i]);}return 0;
}

C语言冒泡排序的优化(图解+代码)相关推荐

  1. 动图图解C语言插入排序算法,含代码分析

    C语言文章更新目录 C语言学习资源汇总,史上最全面总结,没有之一 C/C++学习资源(百度云盘链接) 计算机二级资料(过级专用) C语言学习路线(从入门到实战) 编写C语言程序的7个步骤和编程机制 C ...

  2. c语言选择冒泡排序,c语言选择冒泡排序讲解(附代码)

    c语言选择冒泡排序讲解(附代码) c语言选择冒泡排序讲解(附代码) 冒泡排序原理举例: 给定一组数 15 20 1 16 进行从大到小冒泡排序.第一次起泡的第一次比较:用15和20比较,若15比20小 ...

  3. 冒泡排序c java c,冒泡排序,c语言冒泡排序法代码

    冒泡排序,c语言冒泡排序法代码 冒泡排序 冒泡排序(Bubble Sort),是一种计算机科学领域的较简单的排序算法. 它重复地走访过要排序的元素列,依次比较两个相邻的元素,如果顺序(如从大到小.首字 ...

  4. 数据结构之冒泡排序算法(图解+分析+代码调优)

    文章目录 一.冒泡排序的介绍 二.图示冒泡排序全过程 三.冒泡排序图示小结 四.Java代码实现冒泡排序(优化前) 五.优化方法 六.Java代码实现冒泡排序(优化后) 七.测试冒泡排序是否正确 八. ...

  5. c语言冒泡排序法代码(c语言冒泡排序法代码讲解)

    求一个C语言冒泡排序法的简单程序怎么办? 下一趟排序开始时,R[1..lastExchange-1]是有序区,R[lastExchange..n]是无序区.这样,一趟排序可能使当前有序区扩充多个记录, ...

  6. 通关GO语言19 性能优化:Go 语言如何进行代码检查和优化?

    在上节课中,我为你留了一个小作业:在运行 go test 命令时,使用 -benchmem 这个 Flag 进行内存统计.该作业的答案比较简单,命令如下所示: ➜ go test -bench=. - ...

  7. c语言计算支点距离,长安本科毕业论文设计-—三级齿轮减速器的优化设计(附c语言优化计算程序代码).doc...

    长安本科毕业论文设计--三级齿轮减速器的优化设计(附c语言优化计算程序代码) 二 ○ 一 三 届 毕 业 论 文 三级齿轮减速器的优化设计 学 院: 工程机械学院 专 业: 机械设计制造及其自动化 姓 ...

  8. c语言运行时显示内存不足,请问:c或c++运行时 遇到虚拟内存不足时咋办,帮优化下代码...

    请问:c或c++运行时 遇到虚拟内存不足时咋办,帮优化下代码 [size=4][size=5]我编的一个高精度解hilbert方程组的程序段,用的是GS跌代,但运行时出现"虚拟内存不足&qu ...

  9. seo优化需要c语言吗,SEO优化人员需要优化哪些代码?

    对于一个优秀的SEO人员来说,虽然不需要精通代码,但是一些简单的基本代码是需要理解的. 如果你想成为一个优秀的搜索引擎优化人员,你需要有一个不断学习的精神.我们网站中的一个页面需要优化网站代码.如果你 ...

最新文章

  1. 现在的我为什么不泡技术论坛了
  2. conda 命令和创建tensorflow环境
  3. nginx虚拟目录实现两个后台使用
  4. CSDN×易观算法大赛火热进行中~
  5. vs 移除项目代码管理
  6. Azkaban的编译与安装
  7. 【MFC开发(9)】列表控件List Box
  8. java高级面试题及答案
  9. 2020年三非上岸北邮计算机院考研经验贴(励志)
  10. Navicat12.0 激活
  11. 如何调整金格电子章服务器印章_【​金格统一电子印章平台V2.0】版本正式发布!...
  12. 开启“无线网络”,提示:请启动windows零配置wzc服务
  13. 什么是TCP粘包?怎么解决这个问题
  14. T SNE降维matlab程序,关于t-SNE降维方法
  15. 2021夏令营全记录·华科计算机、中科院网络中心、中科院软件所、浙软
  16. js判断页面第一次加载或者是否执行了刷新操作
  17. 第二章使用VLAN隔离广播域
  18. <PrivateImplementationDetails>.ComputeStringHash 错误解决办法
  19. 计算机学硕和专硕,应该怎么选?
  20. 参加第一届“SLAM技术及应用”暑期学校暨研讨会和全国SLAM技术论坛有感

热门文章

  1. LAG()和LEAD() 分析函数详解
  2. java jsonpath过滤_JSONPATH json解析工具
  3. 数据库 存储过程和函数
  4. 宝藏!揭秘如何写好软考论文框架1000+字
  5. centos 7 查看磁盘io ,找出占用io读写很高的进程
  6. 华为智能音箱真的来了,一大波手机厂商也随后就到
  7. 李宏毅机器学习 Classification
  8. yt-dlp用法和选项
  9. 1950-2021《中国统计年鉴》超长时间跨度动态面板数据 (70w+)实际统计年份1949-2020
  10. 基于肌电信号(sEMG) 的深度学习手势分类-2