排序五:冒泡排序
来源:互联网 发布:linux 解压war 编辑:程序博客网 时间:2024/04/30 15:49
冒泡排序
概念:
冒泡排序是交换排序的一种,交换排序是两两比较待排序的数据,交换不满足次序要求的那对数,直到整个表都满足次序要求为止。
下图所示为第一趟排序,数据两两交换直到末尾< end,可知完成一趟排序后,最后一个数据为最小值(降序),则第二趟时到end- -为止。以此循环,直到end- ->0,排序完成。
优化:
加入标志性变量enchange 若在某一趟完成后发现没有数据交换,则无需进行后面的循环操作,直接打印。
冒泡排序普通版:
//冒泡排序(普通版)void BubbleSort(int* a, size_t n){ assert(a); size_t end = n; while (end > 0) { for (size_t i = 0; i < n; ++i) { if (a[i] < a[i + 1]) swap(a[i], a[i + 1]); } end--; }}
冒泡排序优化版
//冒泡排序(优化)void BubbleSort(int* a, size_t n){ assert(a); size_t end = n; while (end > 0) { bool exchange = false; for (size_t i = 0; i < n; ++i) { if (a[i] < a[i + 1]) swap(a[i], a[i + 1]); exchange = true; } if (exchange == false)//若有序则直接打印,剩下不再遍历 { break; } end--; }}
时间复杂度 O(n^2)
最好情况:本来就是有序数列,只需遍历一趟,所以时间复杂度为O(1)
最坏情况:O(n^2)
稳定性 : 稳定
冒泡排序只有在数据大小需调换时移动,相同数据并不需改变顺序
注:插入排序优于冒泡排序
阅读全文
0 0
- 排序五:冒泡排序
- 排序(五):冒泡排序
- 八大排序算法(五)冒泡排序
- 排序算法(五):冒泡排序
- 排序算法 -- (五)冒泡排序
- 排序算法(五):冒泡排序
- 排序算法(五)冒泡排序
- 自学篇-冒泡排序(五)
- C/C++学习(五)冒泡排序
- 基础算法系列(五)排序算法之冒泡排序
- 排序算法之五--冒泡排序及其改进
- 【Java】五种常见排序之-----------冒泡排序
- 八大排序算法之(五)冒泡排序
- 冒泡排序
- 冒泡排序
- 冒泡排序
- 冒泡排序
- 冒泡排序
- 关于static静态的一些知识(个人总结)
- 生日蜡烛 某君从某年开始每年都举办一次生日party,并且每次都要吹熄与年龄相同根数的蜡烛。 现在算起来,他一共吹熄了236根蜡烛。 请问,他从多少岁开始过生日party的?(第七届蓝桥杯B组
- 支持向量机(SVM)理解以及在sklearn库中的简单应用
- LeetCode 103 Binary Tree Zigzag Level Order Traversal(二叉树层序遍历)
- JavaScript全局函数
- 排序五:冒泡排序
- 第十二天总结
- BZOJ 2005 能量采集(莫比乌斯反演+分块)
- Android如何自定义Preference呢?
- python 写excel(2)
- 二解 约数和luogu2715
- 大数据特征与作用
- Python-栈的链式表实现(没写清楚)
- zxing生成二维码图片