******** fig7.9 ********** void mergesort( input_type a[], unsigned int n ) { input_type *tmp_array; tmp_array = (input_type *) malloc( (n+1)* sizeof( input_type ) ); if( tmp_array != NULL ) { m_sort( a, tmp_array, 1, n ); free( tmp_array ); } else fatal_error("No space for tmp array!!!"); } void m_sort( input_type a[], input_type tmp_array[], int left, int right ) { int center; if( left < right ) { center = (left + right) / 2; m_sort( a, tmp_array, left, center ); m_sort( a, tmp_array, center+1, right ); merge( a, tmp_array, left, center+1, right ); } }