算法导论—快排及优化以及和STL sort 的比较
2015-04-09 16:52
501 查看
#include <iostream> #include <fstream> #include <vector> using namespace std; //当元素少的时候可以采用插入排序 void insertSort(vector<int> &vec,int left,int right) { int i; for(int j=left+1;j<=right;++j) { int key=vec[j]; for(i=j-1;i>=left&&vec[i]>key;--i) vec[i+1]=vec[i]; vec[i+1]=key; } } //取中位数作为最右边的主元 void median3(vector<int> &vec,int p,int r) { int center=(p+r)/2; if(vec[center]<vec[p]) std::swap(vec[center],vec[p]); if(vec[r]<vec[p]) std::swap(vec[r],vec[p]); if(vec[r]>vec[center]) std::swap(vec[center],vec[r]); } int partition(vector<int> &vec,int p,int r) { median3(vec,p,r); int x=vec[r]; int i,j; i=p-1; for(j=p;j<r;++j) { if(vec[j]<x) { i=i+1; std::swap(vec[i],vec[j]); } } std::swap(vec[i+1],vec[r]); return i+1; } void qSort(vector<int> &vec,int p,int r) { if(p+10<r) { int q=partition(vec,p,r); qSort(vec,p,q-1); qSort(vec,q+1,r); } else insertSort(vec,p,r); } int main() { vector<int> vec{19,7,4,5,188,1,0,56,5}; qSort(vec,0,vec.size()-1); for(auto v:vec) cout<<v<<" "; cout<<endl; vector<int> vec1; vector<int> vec2; int val; ifstream in; in.open("rand_file_5000W"); while(in>>val) { vec1.push_back(val); vec2.push_back(val); } in.close(); clock_t start_time=clock(); qSort(vec1,0,vec1.size()-1); clock_t end_time=clock(); cout<<"Running time is: "<< static_cast<double>(end_time-start_time)/CLOCKS_PER_SEC<<" S"<<endl; clock_t start_time2=clock(); sort(vec2.begin(),vec2.end()); clock_t end_time2=clock(); cout<<"Running time is: "<< static_cast<double>(end_time2-start_time2)/CLOCKS_PER_SEC<<" S"<<endl; int flag=1; for(int i=0;i<=vec1.size()-1;++i) { if(vec1[i]!=vec2[i]) flag=0; } if(flag==1) cout<<"right"<<endl; }
相关文章推荐
- STL sort算法中的比较函数
- STL中比较常用的容器是vector,set和map,比较常用的算法有Sort等。
- STL sort算法中的比较函数
- stl sort和qsort的比较
- 使用STL中的泛型算法sort
- 关于性能优化的以及int Number uint的比较
- stl中list的sort算法实现
- 堆(算法导论 part1 foundations, chapter 6 heapsort)
- stl sort算法之研究[转载]
- stl的排序 和 用算法实现的排序比较
- [算法导论]非比较排序及数据结构
- STL-fill()填充算法以及for_each()算法
- 【vc】【STL源码】vector,deque与sort的用法比较及入门
- 关于性能优化的以及int Number uint的比较
- SGI STL: list::sort()算法
- 海量数据库的查询优化以及分页算法[转]
- stl sort算法之研究
- 海量数据库的查询优化以及分页算法[转]
- STL中泛型算法find_if()与sort()的应用举例及详解
- STL经典算法集锦<一>之list::sort