/*************************************************************************
> File Name: quick_sort.cpp
> Author: ryq
> Email: ranyongqing@163.com
> Created Time: 2014年05月24日 星期六 09时41分48秒
************************************************************************/
#include<iostream>
#include<vector>
#include<stdlib.h>
using namespace std;
template<typename T>
void swap(vector<T>&a,int i,int j)
{
T tmp = a[i];
a[i] = a[j];
a[j] = tmp;
}
template<typename T>
void quick_sort(vector<T>&a,int i,int j)
{
int lpos = i;
int rpos = j-1;
T tmp = 0;
if(lpos < rpos){
int pos = rand()%(rpos - lpos + 1) + lpos;
tmp = a[pos];
swap(a,pos,j);
while(lpos < rpos){
while(a[lpos] < tmp)
lpos++;
while(a[rpos] > tmp)
rpos--;
if(lpos < rpos)
swap(a,lpos,rpos);
}
swap(a,lpos,j);
quick_sort(a,i,lpos-1);
quick_sort(a,lpos+1,j);
}
}
int main()
{
int a[] = {81,94,11,96,12,35,17,95,28,58,41,75,15};
vector<int> res(a,a + sizeof(a) / sizeof(int));
quick_sort(res,0,res.size()-1);
for(vector<int>::iterator it = res.begin(); it != res.end(); it++)
cout<<*it<<" ";
cout<<endl;
}
quicksort----C++
最新推荐文章于 2024-05-14 10:51:55 发布