#include <iostream>
using namespace std;
template<class T>
int position(T data[],int left,int right)
{
T bound = data[right];
int i = left-1;
T tmp;
for (int j = left; j != right; ++j) {
if(data[j] <= bound){
i++;
tmp = data[i];
data[i] = data[j];
data[j] = tmp;
}
}
i++;
tmp = data[i];
data[i] = data[right];
data[right] = tmp;
return i;
}
template <class T>
void quicksort(T data[], int left, int right)
{
if(left < right){
int bound = position(data,left,right);
quicksort(data,left,bound-1);
quicksort(data,bound+1,right);
}
}
int main()
{
int arr[19] = {1,2,3,4,4,5,5,6,6,3,3,5,3,3,4,7,2,5,1};
quicksort(arr,0,18);
for(int i = 0; i != 19; ++i)
cout<<arr[i]<<endl;
return 0;
}
|