【一天一算法】冒泡排序
2019独角兽企业重金招聘Python工程师标准>>>
时间复杂度O(n^2)
基本思想:
对待排序的序列进行依次比较相邻的两个对象,并且把大的对象放在后面,小的对象放在前面。每一轮排序结果都会使待排序的序列中最大值有序;算法直到序列有序后结束。整个排序的过程可以使用二次循环实现。
实现代码:
template < class T > void BubbleSort(T * aList, size_t size) { unsigned int i, j; T temp; for (i = 0 ; i < size; ++ i) { for (j = 0 ; j < size - i - 1 ; ++ j) { if (aList[j] > aList[j + 1 ]) { temp = aList[j + 1 ]; aList[j + 1 ] = aList[j]; aList[j] = temp; } } }
}
此算法是最基本的冒泡排序,未加任何优化
以下版本添加了优化条件判断,效率会高一点
template < class T >
void BubbleSort(T * aList, size_t size)
{ unsigned int i, j; T temp; bool isSorted; for (i = 0 ; i < size; ++ i) { isSorted = true ; for (j = 0 ; j < size - i - 1 ; ++ j) { if (aList[j] > aList[j + 1 ]) { isSorted = false ; temp = aList[j + 1 ]; aList[j + 1 ] = aList[j]; aList[j] = temp; } } if (isSorted) { break ; } }
}
转载于:https://my.oschina.net/ijaychen/blog/129958
【一天一算法】冒泡排序相关推荐
- 冒泡排序出现的问题_停课不停学 | 有趣的算法——冒泡排序
停课不停学 有趣的算法--冒泡排序 01 生活中处处都有算法 每个人每天都会用到一些算法,算法也是人类使用计算机解决问题的技巧之一,但是算法并不是仅仅用于计算机领域中,包括在数学.物理甚至是每天的生活 ...
- C语言基础排序算法-冒泡排序
C语言基础排序算法-冒泡排序 什么是冒泡排序? 顾名思义,这种排序方法就像水中的气泡一样,从底逐渐往上冒,一次前进一步.我们来看一个例子,看看到底是怎么冒泡的.假设有一个数组3,2,5,4,1,我们希 ...
- 经典排序算法 - 冒泡排序Bubble sort
经典排序算法 - 冒泡排序Bubble sort 其原理是比较接近的数字22,按照从小到交换大或降序排列, 这样一趟过去后,最大或最小的数字被交换到了最后一位, 然后再从头開始进行两两比較交换,直到倒 ...
- JS数据结构与算法——冒泡排序(把大的数字依次往后放)
一.图解排序过程 注意:比较次数和交换次数之所以不一致,是因为:比较了并不一定就需要交换两个数字的位置,比如比较 1 和 2两个数字,由于 后者本身就比前者大,所以不需要交换两者的位置. 二.代码实现 ...
- 排序算法-冒泡排序算法
2019独角兽企业重金招聘Python工程师标准>>> 冒泡排序算法是所有排序算法中最简单.最基础的一种.冒泡排序算法的思路就是交换排序,通过相邻数据的交换来达到排序的目的. 冒泡排 ...
- 排序算法——冒泡排序(Bubble Sort)
排序算法--冒泡排序(Bubble Sort) 算法简介(Introduction) Bubble sort is to compare adjacent elements of the list a ...
- C语言/Python经典算法冒泡排序
C语言经典算法冒泡排序 #include "stdio.h" int main(){int a[10]={1,3,2,5,9,7,6,8,4,0};for (int i = 0; ...
- python排序算法 ——冒泡排序(附代码)
python排序算法 --冒泡排序 文章目录 python排序算法 --冒泡排序 一.前言 二.算法描述 三.代码实现 总结 一.前言 相关知识来自<python算法设计与分析>.初级排序 ...
- 总结c语言基础算法——冒泡排序法和选择排序法
1.首先无论何种排序方法其最终目的是按要求将所给数据进行排序.而在C语言中可以有很多排序的方法,这里着重介绍的是常用的较为基础和重要的算法--冒泡排序法和选择排序法. 下面将举一个例子进行讲解: 要求 ...
- Golang(二十一)[排序算法-冒泡排序]
Golang-排序算法-冒泡排序 1.简介 2.原理 3.操作规则 4.Golang代码 1.升序 2.降序 3.测试 4.完整代码 5.优化 1.原冒泡排序 2.优化后 1.简介 冒泡排序(Bubb ...
最新文章
- 真相!30K拿到互联网大厂offer,网友:我服了!
- Enhancement spot 增强点简介
- 日常生活小技巧 -- 网络调试助手
- vc实现透明位图,透明背景
- html文字跳转备注,界面跳转备注.html
- OpenGL屏幕空间环境光遮挡
- 微软向Linux表白: 向Linux社区开放60000多项专利
- Go基础学习记录 - 编写Web应用程 - 完善Blog Model
- linux系统编程 -- 僵尸进程 孤儿进程
- Mac上自动隐藏或显示菜单栏
- msdn系统镜像下载
- Linux共享文件夹
- IOS免签网站封装工具PJ版
- AMADA阿玛达触摸屏维修折弯机主机维修
- 学习单片机系列(一)单片机选型
- zotero抓取知网文献
- Android神器Xposed框架
- CSDN独家全网首发专栏 | 《目标检测YOLO改进指南》改进涨点推荐!
- python解析钩针图解到markdown文件/requests/BeautifulSoup
- python idle怎么保存_Word文档如何设置自动保存
热门文章
- Spark 0.9.1 MLLib 机器学习库简介
- 词向量(从one-hot到word2vec)
- 【 Codeforces Round #547 (Div. 3) F2】Same Sum Blocks (Hard)【思维贪心】
- servlet后端连接 微信小程序与_微信小程序授权登录
- CrowdSec:行为检测引擎
- 安全管理:为软件供应链部署零信任方法
- HashMap源码分析(保姆式注解):三大方法(构造、Put、Remove) ;附带面试考点及博主免费答疑
- Lucene PriorityQueue JDK PriorityQueue
- SQL Server 备份和还原
- gis数据与cad数据转换之间的关系