排序算法(三)--冒泡排序法
约定:
- 假设数据中有n个数据元素(关键字)。排列算法中,将序列中各关键字值依次存放于类型为keytype的数组元素K[1], K[2], K[3], …, K[n]中。
- 排序结果按照数据元素(关键字)值的大小,从小到大排序。
核心思想: 第 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 --;}
}
排序算法(三)--冒泡排序法相关推荐
- java 排序算法 讲解_java实现排序算法之冒泡排序法详细讲解
冒泡排序(Bubble Sort),是一种计算机科学领域的较简单的排序算法.它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来.走访数列的工作是重复地进行直到没有再需要交 ...
- 十大排序算法:冒泡排序、选择排序、插入排序、希尔排序、归并排序、快速排序、堆排序、计数排序、桶排序、基数排序
冒泡排序.选择排序.插入排序.希尔排序.归并排序.快速排序.堆排序.计数排序.桶排序.基数排序的动图与源代码. 目录 关于时间复杂度 冒泡排序 选择排序 插入排序 希尔排序 归并排序 快速排序 堆排序 ...
- 排序算法:冒泡排序、插入排序、选择排序、希尔排序
相关博客: 排序算法:冒泡排序.插入排序.选择排序.希尔排序 排序算法:归并排序.快速排序 排序算法:桶排序.计数排序.基数排序 排序算法:堆排序 十大排序算法小结 一.冒泡排序: 1.算法原理: 冒 ...
- golang 排序_常用排序算法之冒泡排序
周末无事,带娃之余看到娃娃在算数,想到了排序-尝试着把几种常用的排序算法跟大家聊一聊,在分析的后面我会用GoLang.PHP和JS三种语言来实现下. 常见的基于选择的排序算法有冒泡排序.插入排序.选择 ...
- 【排序算法】冒泡排序、简单选择排序、直接插入排序比较和分析
[排序算法]冒泡排序.简单选择排序.直接插入排序比较和分析 写在前面: 本文简单介绍了冒泡排序.简单选择排序.直接插入排序,并对这三种排序进行比较,入参都是80000个随机数,比较算法耗时.进一步,我 ...
- 冒泡和快速排序的时间复杂度_常用排序算法之冒泡排序
周末无事,带娃之余看到娃娃在算数,想到了排序-尝试着把几种常用的排序算法跟大家聊一聊,在分析的后面我会用GoLang.PHP和JS三种语言来实现下. 常见的基于选择的排序算法有冒泡排序.插入排序.选择 ...
- 排序算法之冒泡排序(Java版)
排序:即使集合或数组中的元素有序化 本篇介绍最简单.最易掌握的冒泡排序 冒泡排序: 是一种简单的排序算法, 冒泡排序就像学生站队一样,要在老师的引导下,以某位同学位基准,其他学生按身高 ...
- Java排序算法:冒泡排序
Java排序算法:冒泡排序 //创建数组并赋值int[] data = new int[] {11,10,55,78,100,111,45,56,79,90,345,1000};for(int i=0 ...
- 数据结构与算法:十大排序算法之冒泡排序
数据结构与算法:十大排序算法之冒泡排序 package array;import java.util.Arrays;//冒泡排序 //1.比较数组中两个相邻的元素,如果第一个数比第二个数大,我们就交换 ...
最新文章
- 以未来的计算机为题写一篇作文,请以“未来的交通工具”为题写一篇英语作文...
- Android中的常见布局
- python的for循环语句_干货丨Python的循环语句基础讲解!
- 启明云端分享| 家电应用 串口屏选型推荐
- 选择最好用的PyCharm IDE
- 使用electron脚手架electron-vue
- Pandas知识点-排序操作
- flask get和post
- element做树形下拉_Element input树型下拉框的实现代码
- python 打印数组_python打印数组的全部元素 | 学步园
- 报告丨前瞻产业研究院:2019年中国大数据行业研究报告
- java field 字段类型_Java Field类
- JavaScript函数开关思想
- 11岁的Tumblr:开启艰难禁黄之路
- 小巧 mvc servlet 通过反射 跳转 bussiness层
- spark安装-3台虚拟机
- 开始开发IAP ANE
- Python全栈开发-Python爬虫-03 正则表达式详解
- 行业 | 谷歌和亚马逊在赌场门口拉客,你上谁的船?
- 被动套接字 主动套接字_了解网络套接字及其可能性
热门文章
- linux机器不能上网,Deepin Linux 无法上网
- 计算机工程与网络学术会议怎么样,第七届计算机工程与网络国际会议(CENet2017)确保EI快速检索!...
- android node编码,android studio中的Node.js
- 几时几分几秒怎么写_头总是一阵一阵眩晕是怎么回事?眩晕症该如何治疗?
- MySQL服务器地址为空,C++/MySQL - 通过主机地址访问数据库时'未知的MySQL服务器主机';没有IP...
- 传输层端口号的范围是多少?被分为哪两部分_6.传输层协议
- 一篇搞懂Android View
- 转-登录功能通用测试用例设计
- vue-cli 该如何正确打包iconfont?
- linux 用户创建,权限,分组