//快速排序算法
vector<int> quick_sort( vector<int>& arr )
{
int m = arr.size();
if( m==0 ) return arr; //数组有可能为空如[0,1,2,1]
if( arr.size()==1 ) return arr;
/*快速排序算法是已空间换时间的算法*/
/*需要的空间即,存储小于指定数的left数组
存储大于指定数的right数组,以及需要取出指定数*/
vector<int> left;
vector<int> right;
int pivot = m/2;
for( int i=0; i<pivot; ++i )
{
if( arr[i]<=arr[pivot] ) left.push_back( arr[i] );
else right.push_back( arr[i] );
}
for( int i=pivot+1; i<m; ++i )
{
if( arr[i]<=arr[pivot] ) left.push_back( arr[i] );
else right.push_back( arr[i] );
}
vector<int> nums0 = quick_sort( left );
nums0.push_back( arr[pivot] );
vector<int> nums1 = quick_sort( right );
nums0.insert( nums0.end(),nums1.begin(),nums1.end() );
return ( nums0 );
}