Ejemplo n.º 1
0
void List::qs_sort(int p, int r, sort_t order)
{
  // Implement quicksort algorithm.  The list is sorted in place.

  // Returns: Nothing.

#if defined(DEBUG)
  dlog->log_entry(DEBUG_MINTRC, "List::qs_sort(%d,%d,%d)", p, r, order);
#endif

  // It would probably make sense to use STL's sort or something, but
  // that would require a fair amount of rewriting.  Array.C does
  // something similar.
  
  if(p < r)
  {
    int q = qs_partition(p, r, order);
    qs_sort(p, q, order);
    qs_sort(q+1, r, order);
  }

#if defined(DEBUG)
  dlog->log_exit(DEBUG_MINTRC, "List::qs_sort()");
#endif
}
Ejemplo n.º 2
0
void qst(DArray *array, DArray_compare cmp, int low, int hi)
{
  if (low < hi) {
    int p = qs_partition(array, cmp, low, hi);
    qst(array, cmp, low, p);
    qst(array, cmp, p + 1, hi);
  }
}
Ejemplo n.º 3
0
void __quicksort(void *array, int *indexes, int start, int end) {
    int pivot;
    if ( start < end ) {
        pivot = qs_partition(array, indexes, start, end, start);
        __quicksort(array, indexes, start, pivot-1);
        __quicksort(array, indexes, pivot+1, end);
    }
}
Ejemplo n.º 4
0
Archivo: util.c Proyecto: asqz/tagger
static void qs_sort (void* items, int item_size, int l, int r, compare_proc proc, void* user_data)
{
   if (l < r)
   {
      int index = qs_partition(items, item_size, l, r, proc, user_data);
      qs_sort(items, item_size, l, index - 1, proc, user_data);
      qs_sort(items, item_size, index + 1, r, proc, user_data);
   }
}