快速排序实现

来源:互联网 发布:nba视频网络直播 编辑:程序博客网 时间:2024/05/29 03:33
#include <iostream>#include <vector>#include <cstdlib>using namespace std;//两个版本void show(vector<int> &v){vector<int>::iterator pos;for(pos = v.begin();pos != v.end();pos++)cout<<*pos<<" ";cout<<endl;}//第一个版本算法导论上面的那个int partition1(vector<int> &v,int l,int r){int temp;int i = l-1;for(int j = l;j < r;j++){if(v[j] <= v[r]){i++;temp = v[i];v[i] = v[j];v[j] = temp;}}temp = v[i+1];v[i+1] = v[r];v[r] = temp;return i+1;}void quickSort1(vector<int> &v,int l,int r){if(l < r){int m = partition1(v,l,r);quickSort1(v,l,m-1);quickSort1(v,m+1,r);}}//严蔚敏数据结构上的int partition2(vector<int> &v,int l,int r){int key = v[l];int i = l;int j = r;while(i < j){while(v[j] >= key&&j > i){j--;}if(j>i)v[i] = v[j];while(v[i] <= key&&j > i){i++;}if(j > i)v[j] = v[i];}v[j] = key;return j;}void quickSort2(vector<int> &v,int l,int r){if(l < r){int m = partition2(v,l,r);quickSort2(v,l,m-1);quickSort2(v,m+1,r);}}void main(){const int N = 200; vector<int> v,v1;v.reserve(N);for(int i = 0;i<N;i++)v.push_back(rand()%100);cout<<"******************初始数据******************"<<endl;show(v);quickSort1(v,0,N-1);cout<<"******************排序数据******************"<<endl;show(v);v1.reserve(N);for(int i = 0;i<N;i++)v1.push_back(rand()%100);cout<<"******************初始数据******************"<<endl;show(v1);quickSort2(v1,0,N-1);cout<<"******************排序数据******************"<<endl;show(v1);int m;cin>>m;}

倒腾了一下   两种版本的快排   回来再说吧!
0 0
原创粉丝点击