1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
|
void mvect_qsort( mvect *V , int g, int d, int (*F)(const void*, const void*) )
{ void * tmp ;
void * tp ;
int lo = g ;
int hi = d ;
int p = ( lo + hi ) / 2 ;
tmp = V->g_data[p] ;
do
{ while( F( V->g_data[lo], tmp ) < 0 ) lo++;
while( F( V->g_data[hi], tmp ) > 0 ) hi--;
if( lo <= hi )
{ tp = V->g_data[lo] ;
V->g_data[lo] = V->g_data[hi] ;
V->g_data[hi] = tp ;
lo++;
hi--;
}
} while( lo <= hi ) ;
if( hi > g ) mvect_qsort( V,g, hi, F);
if( lo < d ) mvect_qsort(V ,lo,d, F ) ;
} |
Partager