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