快速排序
来源:互联网 发布:淘宝如何判定做工瑕疵 编辑:程序博客网 时间:2024/05/21 10:29
//递归调用版
void QuickSort(int data[], int lo, int hi){ if (lo<hi) { int k = partition(data, lo, hi); QuickSort(data, lo, k-1); QuickSort(data, k+1, hi); }}int partition(int data[],int lo,int hi) //双向扫描。{ int key=data[lo]; //以第一个元素为主元 int l=lo; int h=hi; while(l<h) { while(key<=data[h] && l<h) h--; data[l]=data[h]; while(data[l]<=key && l<h) l++; data[h]=data[l]; } data[l]=key; //1.key。只有出现要赋值的情况,才事先保存好第一个元素的值。 return l; //这里和以下所有的Hoare的变形版本都是返回的是枢纽元素,即主元元素l。}
//非递归版
template <class T>void QuickSort(T data[],int lo,int hi){ stack<int> st; int key; do{ while(lo<hi) { key=partition(data,lo,hi); //递归的本质是什么?对了,就是借助栈,进栈,出栈来实现的。 if( (key-lo)<(key-key) ) { st.push(key+1); st.push(hi); hi=key-1; } else { st.push(lo); st.push(key-1); lo=key+1; } } if(st.empty()) return; hi=st.top(); st.pop(); lo=st.top(); st.pop(); }while(1);}void QuickSort(int data[], int lo, int hi){ if (lo<hi) { int k = RandPartition(data, lo, hi); QuickSort(data, lo, k-1); QuickSort(data, k+1, hi); }}http://blog.csdn.net/v_JULY_v/article/details/6262915
- 快速排序
- 快速排序
- 快速排序
- 快速排序!
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- omap3530 移植 qt2.2.0 触摸屏会飘 QWS_MOUSE_PROTO 决定?
- 黑马程序员0907_API部分+IO输入输出部分
- 马云给职场新人立规矩:自信还是危机感
- sqite3 初级
- 数据类型
- 快速排序
- C++ 错误列表
- 各巨头竞相争夺海量数据云分析市场
- PHP Smarty 用法
- 第13章多线程第三讲
- java流与文件操作
- Java流与文件操作(3)
- 磁盘即将过时 闪存为王
- javascript小技巧