33,028
社区成员




void swap( int& a, int& b )
{
if ( a == b ) return;
a ^= b;
b ^= a;
a ^= b;
}
int partation( int* arr, int low, int high )
{
int ans = low - 1;
for ( int i = low; i < high; ++i )
{
if ( arr[i] < arr[high] )
{
swap( arr[i], arr[++ans] );
}
}
swap( arr[++ans], arr[high] );
return ans;
}
int nth( int* arr, int low, int high, int index )
{
int mid = partation(arr, low, high);
if ( mid == index ) return arr[mid];
return
( mid < index ) ?
nth(arr, mid+1, high, index) :
nth(arr, low, mid-1, index);
}