【吭哧吭哧算法】快速排序
来源:互联网 发布:宝宝照片创意软件 编辑:程序博客网 时间:2024/06/16 17:34
void FastSortHelper(vector<int>&a, int s, int t){ if (t <= s) return; int k = a[s]; int i = s; //start searching position int j = t; //end searching position while (i < j){ int x; for (x = j; x >= s; x--){ if (a[x] < k){ j = x; break; } } for (x = i; x <= j; x++){ if (a[x] > k){ i = x; break; } if (x >= j){ i = j; break; } } swapab(a[i], a[j]); } swapab(a[s], a[j]); FastSortHelper(a, j + 1, t); FastSortHelper(a, s, j - 1); }void FastSort(vector<int> &a){ if (a.size() <= 1) return; FastSortHelper(a, 0, a.size() - 1);
桶排序在有限的数据范围内复杂度是 n
冒泡排序是n方
快速排序最差情况的复杂度和冒泡一样是n方,但是平均算法复杂度是nlogn
核心思想,快速排序不再像冒泡一样一遍又一遍的遍历,为每个元素寻找最后的位置。快排会寻找一个基准数,比基准数小的放左边,比基准数大的放右边。
参考啊哈算法,对于初始序列“6 1 2 7 9 3 4 5 10 8”,6是基准数。小A从左往右找第一个大于6的数,小B从右往左找第一个小于6的数。然后AB交换所在位置的数字。每次B先找, A后找,直到AB碰面的位置。基准数的位置与碰面位置上的数交换。之后对于基准数两侧的数重复做改操作。递归!
阅读全文
0 0
- 【吭哧吭哧算法】快速排序
- 【吭哧吭哧算法】冒泡排序
- 【吭哧吭哧算法】桶排序
- 【吭哧吭哧算法】插入排序
- 【VS开发】cmd dos 批处理重命名文件<不一定非得吭哧吭哧的写C++来操作>
- 排序算法--快速排序
- 排序算法--快速排序
- 排序算法---快速排序
- 排序算法-快速排序
- 排序算法------快速排序
- 排序算法---快速排序
- 排序算法-快速排序
- 排序算法---快速排序
- 排序算法--快速排序
- 排序算法--快速排序
- 排序算法--快速排序
- 排序算法:快速排序
- 排序算法 快速排序
- 微信小程序开发之扫码 扫一扫 wx.scanCode()
- Type handler was null on parameter mapping for property '__frch_productId_0'. It was either not spec
- 二叉树的层序遍历——题集(七)
- Mybatis注解
- vector用法
- 【吭哧吭哧算法】快速排序
- nginx 好用的站点配置文件 支持contos7
- JAVA反射机制学习(三)
- [读书笔记]机器学习-11章-特征选择和稀疏学习
- python+paramiko —— run cmd through middle host
- SQL Server执行计划相关知识
- 选择排序
- 你真的了解volatile吗?
- 动态添加SqlParameter