******** fig7.14 ********** void q_sort( input_type a[], int left, int right ) { int i, j; input_type pivot; /*1*/ if( left + CUTOFF <= right ) { /*2*/ pivot = median3( a, left, right ); /*3*/ i=left; j=right-1; /*4*/ for(;;) { /*5*/ while( a[++i] < pivot ); /*6*/ while( a[--j] > pivot ); /*7*/ if( i < j ) /*8*/ swap( &a[i], &a[j] ); else /*9*/ break; } /*10*/ swap( &a[i], &a[right-1] ); /* restore pivot */ /*11*/ q_sort( a, left, i-1 ); /*12*/ q_sort( a, i+1, right ); } }