快速排序
来源:互联网 发布:windows微信是什么 编辑:程序博客网 时间:2024/06/15 23:52
int GetMid(int a[], int left, int right)//三数取中{int mid = left + (right - left) / 2;if (a[left] <a[right]){if (a[mid] < a[left]){return left;}else{if (a[mid]>a[right]){return right;}else{return mid;}}}else{if (a[right] > a[mid]){return right;}else{if (a[mid] > a[left]){return left;}else{return mid;}}}}//递归实现void Re_FastSort(int a[], int left, int right){if (left >= right){return;}if (right - left < 13){InsertSort(a, right - left + 1);return;}int begin = left;int end = right;int key = GetMid(a, left, right);swap(a[left], a[key]);int temp = a[left];while (begin < end){while (begin<end&&a[end]>temp){end--;}if (begin < end){a[begin] = a[end];begin++;}while (begin<end&&a[begin]<temp){begin++;}if (begin < end){a[end] = a[begin];end--;}}a[begin] = temp;Re_FastSort(a, left, begin - 1);Re_FastSort(a, begin + 1, right);}
//栈实现#include<stack>void NoRe_FastSort(int a[], int left, int right){assert(a);struct left_right{int _left;int _right;left_right(int left, int right):_left(left), _right(right){}};stack<left_right>s;s.push(left_right(left, right));while (!s.empty()){int begin = s.top()._left;int end = s.top()._right;s.pop();int key = GetMid(a, begin, end);swap(a[begin], a[key]);int temp = a[begin];int tmpbegin = begin;int tmpend = end;while (tmpbegin < tmpend){while (tmpbegin < tmpend && a[tmpend] > temp){tmpend--;}if (tmpbegin < tmpend){a[tmpbegin] = a[tmpend];tmpbegin++;}while (tmpbegin < tmpend && a[tmpbegin] < temp){tmpbegin++;}if (tmpbegin < tmpend){a[tmpend] = a[tmpbegin];tmpend--;}}a[tmpbegin] = temp;if (tmpbegin - 1>begin){s.push(left_right(begin, tmpbegin - 1));}if (tmpbegin + 1 < end){s.push(left_right(tmpbegin + 1, end));}}}
0 0
- 快速排序
- 快速排序
- 快速排序
- 快速排序!
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- Android之异步任务AsyncTask解析Json数据
- .NET框架
- JavaScript 正在蚕食着开发领域
- 封装canvas的插件-KineticJs
- 验证折半查找算法
- 快速排序
- HDOJ 5597 GTW likes function (欧拉函数)
- v4l2采集MJPG然后保存为JPG
- 主从表的创建,查询代码待增加
- scala并发编程第8章习题1-3
- [Python标准库]re——正则表达式[三]
- uva 10271——Chopsticks
- 第十三周实践项目~Kruskal算法的验证
- 验证分块查找算法