C语言趣味练习题——冒泡排序


文章目录

  • C语言趣味练习题——冒泡排序
  • 一、冒泡排序介绍
  • 二、图文解释原理
  • 三、代码实现
    • 1.代码示例
    • 2. 代码解析
  • 总结

一、冒泡排序介绍

冒泡排序(Bubble Sort),也称为沉降排序,之所以称其为冒泡排序是因为算法中会把相对较小(大)的数据像水中的气泡一样逐渐上升到数组的顶端。同时,较大(小)的数据也会一步步沉到数组的底端,这个处理过程需要在整个数组范围内反复执行多遍。每一遍执行时,比较相邻的两个元素,并判断是否交换位置。


二、图文解释原理


纯手工制图哦!

三、代码实现

1.代码示例

// 冒泡排序bubble sort
void Bubble_sort(int a[], int sz)
{int i = 0, j = 0;for ( i = 0; i < sz - 1; i++)// 外层循环 sz-1 次{for (j = 0; j < sz - 1- i; j++)  // 内层循环{if (a[j] > a[j + 1]){int temp = a[j];a[j] = a[j + 1];a[j + 1] = temp;}}}
}// 打印数组函数
void print(int arr[],int sz)
{int i = 0;for ( i = 0; i < sz; i++){printf("%d ", arr[i]);}printf("\n");
}int main()
{int i = 0;int arr[10] = { 2,1,8,6,9,7,3,5,4,0 };int sz = sizeof(arr) / sizeof(arr[0]);printf("请输入数据:\n");for ( i = 0; i < sz; i++){scanf("%d", arr + i);}//print(arr, sz); // 打印一遍排序前数组数据Bubble_sort(arr, sz);print(arr, sz);return 0;
}

2. 代码解析

代码解析:对数组中的 sz(sz为数组元素个数) 个数执行 sz -1 遍依次操作,在对每一个的外层循环时,对数组中未排序好的元素进行如下操作:两两相邻的元素进行比较,若下标为 j 的元素大于下标为 j + 1 的元素时,则交换其位置,每完成一次判断并交换才算作一次冒泡排序完成,因此经过 sz - 1 遍操作后就可以将全部数从小到大排好顺序了。

解释:内层循环 j < sz - i - 1:因为数组中一共是sz个元素 j 是从0开始,第一次需要作9次比较才能将最大的数字交换到最后,那么数组下标就是 0~ 8 然后与 下标为0(+1)~8(+1)比大小,所以当 arr[j] 为 sz - 1 - 1 == 8的时候 就已经比完了,以此类推第二轮sz - 2 - 1…


总结

冒泡排序总的来说,易于理解,代码实现简易不复杂,但是唯一不足的是运行效率较低,因为在每一次交换中,一个元素只能一个个的向后先做判断后交换,如果在一个数组元素较大的数组中,无疑是一个缺点!所以小伙伴们还能不能想出更优解的方法呢?希望与大家共同进步!
觉得有帮助的小伙伴点个赞吧

C语言经典练习题(2)——“冒泡排序(Bubble Sort)“相关推荐

  1. 经典排序算法 - 冒泡排序Bubble sort

    经典排序算法 - 冒泡排序Bubble sort 其原理是比较接近的数字22,按照从小到交换大或降序排列, 这样一趟过去后,最大或最小的数字被交换到了最后一位, 然后再从头開始进行两两比較交换,直到倒 ...

  2. Java中的经典算法之冒泡排序(Bubble Sort)

    Java中的经典算法之冒泡排序(Bubble Sort) 原理:比较两个相邻的元素,将值大的元素交换至右端. 思路:依次比较相邻的两个数,将小数放在前面,大数放在后面.即在第一趟:首先比较第1个和第2 ...

  3. java冒泡排序_Java中的经典算法之冒泡排序(Bubble Sort)

    原理:比较两个相邻的元素,将值大的元素交换至右端. 思路:依次比较相邻的两个数,将小数放在前面,大数放在后面.即在第一趟:首先比较第1个和第2个数,将小数放前,大数放后.然后比较第2个数和第3个数,将 ...

  4. 排序 时间倒序_经典排序算法之冒泡排序(Bubble Sort)

    冒泡排序 ( Bubble Sort ) 冒泡排序,正如它的名字一样,未排序数组中的最大(小)值会依次往上浮.冒泡排序主要有两个基本步骤:相邻元素之间的比较 和 交换位置. 步骤分析: 令待排序序列为 ...

  5. 7.使用php描述冒泡排序,PHP 数据结构 算法描述 冒泡排序 bubble sort

    PHP 数据结构 算法描述 冒泡排序 bubble sort 复制代码 代码如下: /** * 冒泡排序 bubble sort * * 原理:多次循环进行比较,每次比较时将最大数移动到最上面.每次循 ...

  6. 排序算法——冒泡排序(Bubble Sort)

    排序算法--冒泡排序(Bubble Sort) 算法简介(Introduction) Bubble sort is to compare adjacent elements of the list a ...

  7. php编写冒泡排序算法_PHP排序算法之冒泡排序(Bubble Sort)实现方法详解

    本文实例讲述了PHP排序算法之冒泡排序(Bubble Sort)实现方法.分享给大家供大家参考,具体如下: 基本思想: 冒泡排序是一种交换排序,它的基本思想是:两两比较相邻记录的关键字,如果反序则交换 ...

  8. 基础排序算法 – 冒泡排序Bubble sort

    原理是临近的数字两两进行比较,按照从小到大或者从大到小的顺序进行交换, 这样一趟过去后,最大或最小的数字被交换到了最后一位, 然后再从头开始进行两两比较交换,直到倒数第二位时结束. 从小到大排序: 原 ...

  9. Java冒泡排序(Bubble Sort)算法实例

    何为冒泡排序? 冒泡:就像气泡从水中冒出来一样 在冒泡排序中,最小数或最大数取决于您是按升序还是降序对数组进行排序,向上冒泡到数组的开头或结尾. 算法描述: 比较相邻的元素.如果第一个比第二个大,就交 ...

最新文章

  1. 基于Flink SQL构建流批一体实时数仓
  2. tesseract-ocr使用以及训练方法
  3. OS / Linux / epoll 各种事件解析
  4. 在Ubuntu上安装Keras深度学习框架
  5. HTTPS请求实现框架
  6. js练习8(幻灯片切换效果)
  7. 一文了解单线激光扫描系统的标定与成像原理
  8. Java基础Day04
  9. linux windows 剪辑,LosslessCut-超快速、好用、不破坏画质又免安装的免费影片剪辑工具 (Windows/Mac/Linux)...
  10. 请问苹果x是如何建文件夹_苹果x怎么创建文件夹相关阅读-苹果x怎么创建文件夹文章阅读-123文学网...
  11. KDF- key derivation function
  12. 仿真器(emulator)和模拟器(simulator)区别可以认为Emulator是Simualtor和真机之间的一层
  13. windows 剪贴板监控
  14. 【STM8】两个单片机之间的Lora通讯实验
  15. wxpython文档_wxPython常用的文件与文件夹操作
  16. 【算法岗求职笔记】降维 · 五问五答
  17. 算法:初探12306售票算法。
  18. android客户端功能,搜狐微博Android客户端最新版 功能丰富 界面友好
  19. iphone资料 各种网址搜集
  20. Linux安装人大金仓v7,人大金仓kingbaseV7 windows环境下安装

热门文章

  1. Java实现doc转docx
  2. VS2008试用版破解方法
  3. MySQL报错问题:2509
  4. (遇到问题) AAAI2021 pdf要求: CYMK颜色空间,png图片300DPI,字体嵌入pdf
  5. Python matplotlib数据可视化 subplot绘制多个子图
  6. SQL server 常见面试题
  7. MDK 更换版本,原工程debug标签setting闪退
  8. 数据库设计(理论实例)
  9. ABAP BDC返回成功但是未创建单据或没有产生相应效果
  10. 英特尔携手浪潮、锐捷网络和Silicom,构建强大的IPU生态系统