交换排序-快速排序
2017-11-11 20:57
218 查看
#include<iostream> using namespace std; #include<vector> class QuickSort { private: vector<int>A; public: QuickSort(vector<int>B):A(B){ Sort(A.begin(),A.end()-1); } static vector<int>::iterator Partition(vector<int>::iterator first,vector<int>::iterator end) { vector<int>::iterator ib=first; vector<int>::iterator ie=end; while(ib<ie) { while(ib<ie){ if(*ib>*ie) { int temp=*ib; *ib=*ie; *ie=temp; ib++; break; } else ie--; } while(ib<ie){ if(*ie<*ib) { int temp=*ib; *ib=*ie; *ie=temp; ie--; break; } else ib++; } } return ie; } void Sort(vector<int>::iterator first,vector<int>::iterator end) { if(first<end) { vector<int>::iterator id=Partition(first,end); Sort(first,id-1); Sort(id+1,end); } } void Show(){ vector<int>::iterator is; for(is=A.begin();is!=A.end();is++) cout<<*is<<" "; cout<<endl; } }; int main() { int n; cout<<"向量大小:"; cin>>n; vector<int>B(n); for(int i=0;i<n;i++) cin>>B[i]; QuickSort A(B); //构造时调用快速排序 A.Show(); return 0; }