约定:

  1. 假设数据中有n个数据元素(关键字)。排列算法中,将序列中各关键字值依次存放于类型为keytype的数组元素K[1], K[2], K[3], …, K[n]中。
  2. 排序结果按照数据元素(关键字)值的大小,从小到大排序。

核心思想: 第 i ( i = 1, 2, … ) 趟排序是从序列中前 n-i+1 个元素的第 1 个元素开始,相邻两个元素进行比较,若前者大于后者,两者交换位置,否则不交换。
这种排序法通过相邻两个元素之间的比较与交换,使值较小的元素逐步从后面移到前面,值较大的元素从前面移到后面。
若某一趟排序过程中只有比较动作而无元素交换位置的动作,则说明到这一趟排序为止序列已经按值有序,排序可以到此结束。
为确定某一趟排序过程中是否有元素交换位置的动作,设置一个标志flag,约定
flag={0某一趟排序动作中无元素交换的动作1某一趟排序动作中有元素交换的动作flag= \begin{cases} 0& \text{某一趟排序动作中无元素交换的动作}\\ 1& \text{某一趟排序动作中有元素交换的动作} \end{cases}flag={01​某一趟排序动作中无元素交换的动作某一趟排序动作中有元素交换的动作​

void BUBBLESORT(keytype K[], int n)
{int i, j, flag = 1;keytype temp;i = n - 1;while (i>0 && flag=1) {flag = 0;                  // 每一趟排序之前先置标志flag为0for (j=1; j<=i; j++)if (K[j] > K[j+1]) {temp = K[j];K[j] = K[j+1];K[j+1] = temp;flag = 1;}i --;}
}

排序算法(三)--冒泡排序法相关推荐

  1. java 排序算法 讲解_java实现排序算法之冒泡排序法详细讲解

    冒泡排序(Bubble Sort),是一种计算机科学领域的较简单的排序算法.它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来.走访数列的工作是重复地进行直到没有再需要交 ...

  2. 十大排序算法:冒泡排序、选择排序、插入排序、希尔排序、归并排序、快速排序、堆排序、计数排序、桶排序、基数排序

    冒泡排序.选择排序.插入排序.希尔排序.归并排序.快速排序.堆排序.计数排序.桶排序.基数排序的动图与源代码. 目录 关于时间复杂度 冒泡排序 选择排序 插入排序 希尔排序 归并排序 快速排序 堆排序 ...

  3. 排序算法:冒泡排序、插入排序、选择排序、希尔排序

    相关博客: 排序算法:冒泡排序.插入排序.选择排序.希尔排序 排序算法:归并排序.快速排序 排序算法:桶排序.计数排序.基数排序 排序算法:堆排序 十大排序算法小结 一.冒泡排序: 1.算法原理: 冒 ...

  4. golang 排序_常用排序算法之冒泡排序

    周末无事,带娃之余看到娃娃在算数,想到了排序-尝试着把几种常用的排序算法跟大家聊一聊,在分析的后面我会用GoLang.PHP和JS三种语言来实现下. 常见的基于选择的排序算法有冒泡排序.插入排序.选择 ...

  5. 【排序算法】冒泡排序、简单选择排序、直接插入排序比较和分析

    [排序算法]冒泡排序.简单选择排序.直接插入排序比较和分析 写在前面: 本文简单介绍了冒泡排序.简单选择排序.直接插入排序,并对这三种排序进行比较,入参都是80000个随机数,比较算法耗时.进一步,我 ...

  6. 冒泡和快速排序的时间复杂度_常用排序算法之冒泡排序

    周末无事,带娃之余看到娃娃在算数,想到了排序-尝试着把几种常用的排序算法跟大家聊一聊,在分析的后面我会用GoLang.PHP和JS三种语言来实现下. 常见的基于选择的排序算法有冒泡排序.插入排序.选择 ...

  7. 排序算法之冒泡排序(Java版)

    排序:即使集合或数组中的元素有序化 本篇介绍最简单.最易掌握的冒泡排序 冒泡排序:         是一种简单的排序算法, 冒泡排序就像学生站队一样,要在老师的引导下,以某位同学位基准,其他学生按身高 ...

  8. Java排序算法:冒泡排序

    Java排序算法:冒泡排序 //创建数组并赋值int[] data = new int[] {11,10,55,78,100,111,45,56,79,90,345,1000};for(int i=0 ...

  9. 数据结构与算法:十大排序算法之冒泡排序

    数据结构与算法:十大排序算法之冒泡排序 package array;import java.util.Arrays;//冒泡排序 //1.比较数组中两个相邻的元素,如果第一个数比第二个数大,我们就交换 ...

最新文章

  1. 基于Erlang语言的视频相似推荐系统 | 深度
  2. jquery 组合键键盘事件
  3. mysql 之后_MYSQL登陆完之后如何操作???(新手求助)
  4. java泛型程序设计——反射和泛型
  5. LeetCode 764. 最大加号标志(DP)
  6. php依赖注入解决什么问题,php – 了解依赖注入的问题
  7. 我连饭也顾不上HAO3GP整站源码
  8. Adobe illustrator 图的放置和微调 - 连载 9
  9. HALCON 21.11:学习笔记---OPC_UA(I/O)
  10. hashcode()和equals()的区别
  11. asp.net dev xtraReporting(一)静态页面
  12. h5应用 vue 钉钉_快速上手——钉钉H5微应用开发接入
  13. unity安装到一半失败
  14. LintCode 158. 两个字符串是变位词 JavaScript算法
  15. Android App开发动画特效中遮罩动画的讲解及实战演示(附源码 简单易懂 可直接使用)
  16. FRW辐轮王全球十大顶级运动户外品牌第一自行车受邀中国进博会
  17. word数据提取技巧:如何批量提取身份证出生日期
  18. IOS 发布被拒 PLA 1.2问题 整个过程介绍 03 个人账户升级公司账户
  19. 提升成都文化产业竞争力的钻石体系
  20. python基础_面向对象进阶

热门文章

  1. mysql4函数_MySQL-4.常见函数
  2. 十 全局结果页面的配置
  3. 5.Docker之镜像的使用
  4. jetty;linux 目录结构
  5. linux 常识笔记 20160621
  6. Android手机通讯录解析
  7. UIKit框架-高级控件Swift版本: 5.UITextView方法/属性详解
  8. React实现类似淘宝tab居中切换效果
  9. LeetCode(1030)——距离顺序排列矩阵单元格(JavaScript)
  10. LeetCode(852)——山脉数组的峰顶索引(JavaScript)