//
// main.cpp
// Data Structure TRY1
//
// Created by zr9558 on 6/7/13.
// Copyright (c) 2013 zr9558. All rights reserved.
//
// 算法导论中文版第七章:快速排序
#include<iostream>
using namespace std;
#include<vector>
#include<math.h>
template<typename Comparable>
int partition( vector<Comparable> &a, int p, int r)
{
Comparable x=a[r];
int i=p-1;
for( int j=p; j<=r-1; ++j)
{
if( a[j]<=x)
{
++i; swap(a[i],a[j]);
}
}
swap(a[i+1],a[r]);
return i+1;
}
template<typename Comparable>
void quickSort( vector<Comparable> &a, int p, int r)
{
if( p<r)
{
int q=partition(a,p,r);
quickSort(a,p,q-1);
quickSort(a,q+1,r);
}
}
template<typename Comparable>
void quickSort( vector<Comparable> &a)
{
quickSort(a,0,int(a.size())-1);
}
int main()
{
vector<int> ivec;
for( int i=0; i<40; ++i)
ivec.push_back(rand()%101);
for( int i=0; i!=ivec.size(); ++i)
cout<<ivec[i]<<" ";
cout<<endl;
quickSort(ivec);
for( int i=0; i!=ivec.size(); ++i)
cout<<ivec[i]<<" ";
cout<<endl;
return 0;
}