快速排序实现
来源:互联网 发布: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
- 快速排序算法实现
- 快速排序的实现
- java实现快速排序
- 快速排序---c#实现
- 快速排序算法实现
- 快速排序Java实现
- 快速排序算法实现
- 快速排序java实现
- 快速排序JAVA实现
- AWK快速排序实现
- Java实现快速排序
- 快速排序实现
- 数组实现快速排序
- 快速排序的实现
- 快速排序--Java实现
- 递归实现快速排序
- 快速排序java实现
- C#实现快速排序
- Spring注入方式二:构造器注入
- cdev动态和静态注册的理解错误
- iOS 中 CAtextLayer 类的妙用 -
- Extjs案例--员工信息填写界面布局
- 博弈基础知识总结
- 快速排序实现
- sqlserver锁表、解锁、查看销表
- 查看sqlserver被锁的表以及如何解锁
- 解压xz文件
- Java中Array与ArrayList的主要区别
- 使用Java8优化Fibonacci数
- 启用新的博客地址http://icerote.net/blog/
- 【转】immunity debugger Pycmmands添加模块--Python灰帽子
- Extjs案例---后台管理系统界面布局