排序之冒泡排序
来源:互联网 发布:柯洁评论黑嘉嘉 知乎 编辑:程序博客网 时间:2024/05/23 16:56
步骤:
- 数列: 头..............尾
- 从数列尾部开始,相邻元素比较大小,小的向头移动
- 每一轮移动至头的数字按顺序排列下来
代码:
void BubbleSort(vector<int>& num){int size = num.size();for (int i = 0; i < size; i++){for (int j = size - 1; j>i; j--){if (num[j] < num[j - 1])swap(num[j], num[j - 1]);}}}
问题:
- 例如对于数列 2,1,3,4,5,6,7,8,9
只有第一轮从尾至头交换了1,2两个数字,其他的都是按顺序排好的,那么就浪费了很多时间
改进:
- 通过添加一个Flag,当从尾至头没有经过交换时直接退出循环
代码:
void BubbleSort(vector<int>& num){int size = num.size();int flag = 1;for (int i = 0; i < size&&flag; i++){flag = 0;for (int j = size - 1; j>i; j--){if (num[j] < num[j - 1]){swap(num[j], num[j - 1]);flag = 1;}}}}
不足:
- 十分浪费内存,繁杂
- 时间复杂度最好情况O(n),最坏情况O(n^2)
阅读全文
0 0
- 排序之冒泡排序
- 排序之冒泡排序
- 排序之冒泡排序
- 排序之冒泡排序
- 排序之冒泡排序
- 排序之冒泡排序
- 排序之冒泡排序
- 排序之冒泡排序
- 排序之冒泡排序
- 排序之冒泡排序
- 排序之冒泡排序
- 排序之冒泡排序
- 排序之冒泡排序
- 冒泡排序之排序
- 排序之 冒泡排序
- 排序之冒泡排序
- 排序之冒泡排序
- 排序之冒泡排序
- Nginx 启动或重启失败原因总结及解决办法
- Angular2 创建与使用Observable
- 数据结构实验之二叉树二:遍历二叉树
- MyBatis的foreach语句详解
- 2017多校6 1003 Inversion
- 排序之冒泡排序
- Spring Boot启动过程源码分析
- Ruby操作MongoDB数据库(进阶十二)--GridFS
- 【POJ3252】 Round Numbers
- Accurate Single Stage Detector Using Recurrent Rolling Convolution
- UVA-10881 Piotr's Ants
- 微信开发——3、微信接入(javaweb)
- SQL查询效率:100w数据查询只需要1秒钟
- [P1349]广义斐波那契数列