Esempio n. 1
0
/*
 * Função recursiva do quickSort.
 */
void quickSortR( int* array, int inicio, int fim ) {

    int meio;

    if ( inicio < fim ) {
        meio = particionar( array, inicio, fim );
        quickSortR( array, inicio, meio );
        quickSortR( array, meio + 1, fim );
    }

}
Esempio n. 2
0
void quickSortR(T* a, long N) {
//N is last element
  long i = 0, j = N;
  T temp, p;

  p = a[ N>>1 ];

  do {
    while ( a[i] < p ) i++;
    while ( a[j] > p ) j--;

    if (i <= j) {
      temp = a[i]; a[i] = a[j]; a[j] = temp;
      i++; j--;
    }
  } while ( i<=j );


  if ( j > 0 ) quickSortR(a, j);
  if ( N > i ) quickSortR(a+i, N-i);
}
Esempio n. 3
0
/*
 * Ordenação rápida.
 *
 * Neste algoritmo, o array é particionado em duas partes
 * e a ordenação é feita chamando-se recursivamente a
 * função de ordenação.
 *
 * Complexidade:
 *     Melhor caso: O(n log n)
 *      Caso médio: O(n log n)
 *       Pior caso: O(n^2)
 */
void quickSort( int *array, int tamanho ) {
    quickSortR( array, 0, tamanho - 1 );
}