归并排序
归并排序模板
void merge_sort ( int a [ ] , int l , int r )
{
if ( l == r ) return ;
int mid = ( l + r ) >> 1 ;
merge_sort ( a , l , mid ) , merge_sort ( a , mid + 1 , r ) ;
for ( int i = l , j = l , k = mid + 1 ; i <= r ; i++ )
{
if ( j == mid + 1 ) t [ i ] = a [ k++ ] ;
else if ( k == r + 1 ) t [ i ] = a [ j++ ] ;
else t [ i ] = a [ j ] < a [ k ] ? a [ j++ ] : a [ k++ ] ;
}
for ( int i = l ; i <= r ; i++ ) a [ i ] = t [ i ] ;
}

浙公网安备 33010602011771号