冒泡法

定义:它重复地走访过要排序的元素列,依次比较两个相邻的元素,如果顺序(如从大到小、首字母从Z到A)错误就把他们交换过来。走访元素的工作是重复地进行直到没有相邻元素需要交换,也就是说该元素列已经排序完成。这个过程类似于水泡向上升一样,因此而得名。

冒泡排序算法原理

(由小到大)
把相邻的两个数进行比较,如果第一个数比第二个数大,就交换位置,依次进行比较第一次循环就把最大的数移动到了最后一个位置,第二次循环除了最后一个数其他数字重复以上步骤就把第二大的数字移动到了倒数第二个位置,依次进行循环比较。
(由大到小)
把相邻的两个数进行比较,如果第一个数比第二个数小,就交换位置,依次进行比较第一次循环就把最小的数移动到了最后一个位置,第二次循环除了最后一个数其他数字重复以上步骤就把第二小的数字移动到了倒数第二个位置,依次进行循环比较。

算法稳定性

冒泡排序就是把小的元素往前调或者把大的元素往后调。比较的是相邻的两个元素,交换也发生在这两个元素之间。所以,如果两个元素相等,是不会再交换的;如果两个相等的元素没有相邻,那么即使通过前面的两两交换把两个相邻起来,这时候也不会交换,所以相同元素的前后顺序并没有改变,所以冒泡排序是一种稳定排序算法

由VS Code编译成功的C语言代码

注意:

scan()函数用于输入字符串,在头文件“stdio.h”中

1.由于scanf函数的实现原理,所有标量参数的前面必须加上一个“&”符号;数组名做参数前面就不需要加上“&”符号,但是,数组中的某个特定的元素做参数就需要加上“&”符号。
2.使用所有格式码(除了%c之外)时,输入值之前的空白(空格、制表符、换行符等)会被跳过,值后的空白表示该值得结束。注意scanf不能接受空格、制表符、换行符等
格式:int a; scanf(“%d”,&a);

printf()函数是一个标准库函数用于输出字符串,在头文件“stdio.h”中

格式:printf(“格式控制字符串”,输出列表)
“%d”表示按十进制整型输出
“%ld”表示按十进制长整型输出
“%c”表示按字符型输出
“%s”表示按字符串输出
“%f”表示按实数输出
“%lf”表示双精度实数

#include <stdio.h>
#include<stdlib.h>void main(){int a[10];int i,j,temp;//输入10个整形数据printf("请输入数据:\n");for(i=0;i<10;i++){scanf("%d",&a[i]);}//排序(由小到大排序)/*for(i=0;i<9;i++){for(j=0;j<9-i;j++){if(a[j]>a[j+1]){temp=a[j];a[j]=a[j+1];a[j+1]=temp;}}}*///排序(由小到大排序)/*for(i=0;i<9;i++){for(j=1+i;j<10;j++){if(a[j]<a[i]){temp =a[i];a[i]=a[j];a[j]=temp;}               }}*///排序(由大到小排序)for(i=0;i<10;i++){for(j=1+i;j<10;j++){if(a[i]<a[j]){temp =a[i];a[i]=a[j];a[j]=temp;}}}//打印排序结果for(i=0;i<10;i++){printf("%d\n",a[i]);}system("pause");   //防止按回车闪退,在退出程序前调动系统的暂停命令}

十大排序算法——冒泡法相关推荐

  1. 「干货总结」程序员必知必会的十大排序算法

    点击上方 好好学java ,选择 星标 公众号 重磅资讯.干货,第一时间送达 今日推荐:硬刚一周,3W字总结,一年的经验告诉你如何准备校招! 个人原创100W+访问量博客:点击前往,查看更多 绪论 身 ...

  2. 「归纳|总结」程序员必知必会的十大排序算法

    微信搜一搜「bigsai」关注这个有趣的程序员 新人原创公众号,求支持一下!你的点赞三连肯定对我至关重要! 文章已收录在 我的Github bigsai-algorithm 欢迎star 本文目录 绪 ...

  3. 归并排序执行次数_十大排序算法,看这篇就够了

    排序算法分类[1][2] 比较类排序:通过比较来决定元素间的相对次序,由于其时间复杂度不能突破O(nlogn),因此也称为非线性时间比较类排序. 非比较类排序:不通过比较来决定元素间的相对次序,它可以 ...

  4. 程序员必知必会的十大排序算法

    绪论 身为程序员,十大排序是是所有合格程序员所必备和掌握的,并且热门的算法比如快排.归并排序还可能问的比较细致,对算法性能和复杂度的掌握有要求.bigsai作为一个负责任的Java和数据结构与算法方向 ...

  5. mysql外部排序算法_「干货总结」程序员必知必会的十大排序算法

    绪论 身为程序员,十大排序是是所有合格程序员所必备和掌握的,并且热门的算法比如快排.归并排序还可能问的比较细致,对算法性能和复杂度的掌握有要求.bigsai作为一个负责任的Java和数据结构与算法方向 ...

  6. JS 实现十大排序算法

    文章目录 前言 零.十大排序 一.冒泡排序(bubbleSort) 二.选择排序(selectionSort) 三.插入排序(insertSort) 四.希尔排序(shellSort) 五.归并排序( ...

  7. DSA之十大排序算法第六种:Quick Sort

    快速排序 2019年8月23日17:45:21 之前我们已经分析过 冒泡排序,我建议:当你在看这篇博客的时候,请先回顾 冒泡排序:详见DSA之十大排序算法第一种:Bubble sort 文章目录 一次 ...

  8. JAVA十大排序算法动画_十大排序算法(java实现)

    [前言]最近在重新研究算法,此篇博文供自己复习使用也为方便广大程序员同学!此文代码均为自己实现,通过对比经典解法校验,若有错请读者及时提出! - [对比分析图]首先,我们先来对比分析一下这十大排序算法 ...

  9. 程序员必备十大排序算法

    程序员必备十大排序算法 常见排序算法 基本概念 插入排序 直接插入排序 排序思路 排序过程 代码实现 算法分析 折半插入排序 排序思路 排序过程 代码实现 算法分析 希尔排序 排序思路 排序过程 代码 ...

  10. 【十大排序算法】(一)冒泡排序算法(优化)

    一.优化第一版 优化第一版是针对类似 int[] arr = {3,2,1,4,5,6,7,8,9; 这样的有很多已经排好序的数组,为了不让它做无用的循环,对于此场景进行的优化,优化代码如下: // ...

最新文章

  1. 【高并发】在高并发环境下该如何构建应用级缓存?
  2. C++11中的Lambda表达式
  3. 面向切面(AOP)之Spring接口方式 schema配置方式 aspectj注解方式
  4. Redis 实现延迟队列?深深被折服!!
  5. Linux服务-SSH服务部署
  6. WPF实现实现圆形菜单
  7. linux 磁盘管理3板斧,Linux磁盘管理三板斧的使用心得
  8. Spring核心接口之Ordered
  9. Geodatabase概述(翻译)
  10. mysql笔记手写_MySQL 笔记(一)
  11. Python 文件操作三
  12. linux中的文件权限drm解释,DRM内核源码分析之三
  13. 修改 连接层_Mybatis连接池_动态sql语句_多表查询实现
  14. 【Windows10_1809 + Ubuntu_18.04】+【SSD + HDD】双硬盘双系统装机心得分享
  15. 春晚红包互动:中国云计算的成长史
  16. OA流程审批系统,即刻告别纸质化办公
  17. ppt加html链接,ppt制作中如何添加超链接(完整版).doc
  18. 《西游降魔录》模块学习笔记
  19. 新款宝马MINI钥匙增加!轻松搞定,这MINI看着还可以噢
  20. 往事如烟 - 老柏1

热门文章

  1. 浏览器中调用Linux程序,一个可以使用浏览器通过ssh连接linux的程序
  2. 二维数组和稀疏数组转化
  3. 多服务器消息推送消息,多浏览器窗口接收websocket服务器推送消息问题
  4. 重构Webpack系列之四 ---- Loaders
  5. pythonlog数组_Numpy掩码式数组详解
  6. 眼图在通信系统中有什么意义_KT124煤矿调度通信系统和传统调度系统相比有什么优势...
  7. JAVA的序列化不得不说的事
  8. Java 8 你需要掌握的新特性
  9. Android开发点滴 - 实现层级式导航(API 16+)
  10. oracle中exists和in的比较