目录

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语言——冒泡排序法相关推荐

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

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

  2. C语言——冒泡排序法

    C语言--冒泡排序法 问题描述: 1, 3, 2, 6, 4, 5, 9, 8, 10, 7进行从小到大排序 代码: # include <stdio.h>int main() {int ...

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

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

  4. c语言冒泡排序项目总结,C语言冒泡排序法心得

    记得以前在大学里学习c语言的时候,刚开始是很吃力的. 入门级别的算法中有个叫冒泡排序法,也有称为气泡排序法.那时候刚接触它就对它的名字特别感兴趣,因为觉得很有意思.好了,废话不多说了,我们先一起简单回 ...

  5. c语言冒泡排序(c语言冒泡排序法详解)

    请讲解下C语言的冒泡排序法 冒泡法,就是通过多次循环排序的一种方法. 第一次循环,让最小(最大)的值浮到第一位, 第二次循环,让剩余的数字中最小(最大)浮到第二位 依次类推. 这种方法就像水泡上浮一样 ...

  6. C语言冒泡排序法,用函数形式实现。

    冒泡排序法 释疑:冒泡排序法是将数组中的元素依次从小到大(Also 从大到小)进行排序下来.请看如下操作! 共有4个数,如 2,4,1,3. 进行N-1次循环,每一次循环中需进行N-1-i 次交换 i ...

  7. c语言冒泡排序法6,C语言的冒泡排序法

    数字的排序: #include"stdafx.h" #include #define SIZE 10 int main() { int a[SIZE] = { 12 ,43,9,1 ...

  8. (C语言)冒泡排序法

    本题来自pintia.cn 题目要求 代码 测试结果 PTA测试结果 题目要求 将N个整数按从小到大排序的冒泡排序法是这样工作的:从头到尾比较相邻两个元素,如果前面的元素大于其紧随的后面元素,则交换它 ...

  9. c语言冒泡排序法程序填空_【C语言】两种方式实现冒泡排序算法

    题目要求 编写一个C语言程序,实现基本的冒泡排序算法. 算法 冒泡排序,用一句话来总结: 一组数中,相邻的两个数进行比较.交换,将最大(小)数交换至尾(首)部,即完成了一次冒泡排序 要想对N个数字进行 ...

最新文章

  1. python集合中的元素是否可以重复_python中集合中的元素是否可以重复
  2. unity值得推荐的网址
  3. ASP.NET3.5 企业级项目开发 -- 第二章(续) 数据访问层(DAL)的开发解决方案提出...
  4. 【高并发】面试官:讲讲高并发场景下如何优化加锁方式?
  5. 华为的JAVA面试题及答案(部分)
  6. 传统红色纹样图案背景|中式海报必备素材
  7. 为什么大多数私人企业无法做大做强?
  8. numpy.ndarray.flat/flatten 与 Spark 下的 flatMap
  9. 系统同传软件_语情快递 | 手语同传AI,你见过吗?
  10. 视频教程_Mastercam2017车削视频教程,数控车床编程视频教程,vericut车床仿真视频...
  11. 微信分身服务器验证失败咋办,微信好友验证发送失败原因分析及解决方法汇总...
  12. Caffe(12)--实现YOLOv2目标检测
  13. 荐书 | 5本数学科普让你不再“畏惧”数学,感受数学的内在美
  14. html自定义菜单按钮图片,editormd,markdown 自定义导航栏按钮
  15. ABP vNext 缓存使用
  16. cas-client单点登录客户端拦截请求和忽略/排除不需要拦截的请求URL的问题
  17. zzuli:1000从今天开始入坑C语言
  18. 转载:WVGA,QVGA,VGA,HVGA,WQVGA是什么意思?如何区别?
  19. 上善若水,水利万物而不争
  20. Word中设置不同页面的页眉不一样的方法(页脚、页码同理)

热门文章

  1. 我的世界服务器显示文字,我的世界服务器悬浮字体教程 | 手游网游页游攻略大全...
  2. 聚类dbi指数_聚类-K-Means
  3. aws php 上传文件 限制大小_php如何实现文件上传下载-PHP问题
  4. 笨办法学python 习题46-windows
  5. C/C++时间字符串和时间戳的相互转化
  6. 小波变换之尺度函数和小波函数
  7. VBA遍历文件夹下的所有文件
  8. Windows Server 2008 R2部署active directory服务器
  9. S32K144 CAN收发调试经验总结
  10. Collections详解