排序算法1——冒泡排序
来源:互联网 发布:java attribute用法 编辑:程序博客网 时间:2024/05/01 09:25
冒泡排序是一种比较简单的 稳定排序 算法,效率不高,因此实际当中用到的机会并不多。但作为快速排序算法的基础,还是有必要了解一下。
顾名思义,冒泡就是指大的数字(气泡)会优先从底部升到顶端。具体实现的方式就是重复的 交换排序,通过两两比较不断地将大的数字右移。具体看下面的GIF图就很清楚了。
冒泡排序在 最坏情况下的时间复杂度是O(n²),最坏的情况比如将一组降序排好的数据按升序排列。
下面是一个相对效率较高的冒泡排序实现,通过设置一个标志位来控制提前跳出。
// 冒泡排序void BubbleSort(int data[], int n) { bool swapped; int temp_data; for(int i=n-1; i>=0; i--) { swapped = false; for(int j=0; j<i; j++) { if (data[j+1] < data[j]) { // 交换数据 temp_data = data[j+1]; data[j+1] = data[j]; data[j] = temp_data; swapped = true; } } if(false == swapped) break; }}
PS. 上面程序中如果把data[j+1] < data[j] 改为 data[j+1] <= data[j],那么就不是稳定排序了。这说明了,排序算法的稳定性其实还和具体实现有关。
下面再给一个链接用来演示冒泡的原理:
http://www.cs.armstrong.edu/liang/animation/web/BubbleSort.html
下面给一个Flash链接,用来演示不同数据分布情况下,冒泡排序的复杂度。
https://www.toptal.com/developers/sorting-algorithms/bubble-sort
1 0
- 排序算法1—插入排序、选择排序、冒泡排序
- 排序算法1——冒泡排序
- 排序算法1——冒泡排序
- 排序算法(1)—冒泡排序
- 排序算法—冒泡排序
- 【排序算法】——冒泡排序算法
- 排序算法——java实现(1):冒泡排序算法
- 排序算法———冒泡排序
- 排序算法——冒泡法排序
- 排序算法——冒泡排序
- 排序算法——冒泡排序
- 排序算法——冒泡排序
- 排序算法总结——冒泡排序
- 经典排序算法——冒泡排序
- 排序算法——冒泡排序
- c++排序算法——冒泡排序
- 算法——排序之冒泡排序
- 排序算法——冒泡排序
- 深入理解JVM—JVM内存模型
- BZOJ2301: [HAOI2011]Problem b 莫比乌斯反演+容斥原理
- poj 3259 Wormholes
- N个有序整数数列已放在一维数组中,利用二分查找法查找整数m在数组中的位置,若找到,则输出其下标值;反之,则输出 “Not be found”
- Elasticsearch创建索引和映射结构详解
- 排序算法1——冒泡排序
- 基础练习 字符串对比
- 跨iframe通信方案
- 文件上传
- ElasticSearch什么是文档?索引一个文档
- CSS3特效之翻转
- Python NLTK Downloader raise LookupError(resource_not_found) 自然语言处理
- 那些强悍的PHP一句话后门
- Mac通过Docker部署Gitlab实践