Ejemplo n.º 1
0
void quicksort_classico (int* vet, int p, int r) {
  if (p < r) {
    int q = particiona(vet, p, r);
    quicksort(vet, p, q-1);
    quicksort(vet, q + 1, r);
  }
}
Ejemplo n.º 2
0
Arv* arv_reconstroi (Arv* arv, Fila* preordem, infotype *vetDFS, infotype inicio, infotype tamanho){

    infotype pivo, x = 0;
   
   /* Enquanto houver elementos na fila do percorrimento preordem significa que ainda temos que
   percorrer a árvore e reconstrui-la */

    while (!fila_vazia(preordem)){

        x = fila_remove (preordem);

        arv = arv_insere (arv, x, arv);

        /* Encontramos o pivô do vetor DFS que representa a raiz da árvore */
        pivo = particiona (preordem, vetDFS, inicio, tamanho, x);

        /* Constrói subárvore esquerda recursivamente com a raiz da árvore sendo
        a raiz da subárvore esquerda */
        arv = arv_reconstroi (arv, preordem, vetDFS, inicio, pivo - 1);

        /* Constrói subárvore direita recursivamente com a raiz da árvore sendo
        a raiz da subárvore direita */
        arv = arv_reconstroi (arv, preordem, vetDFS, pivo + 1, tamanho);

    }

    return arv;
}
void quicksort(int *V, int a, int b) {
	if ( b <= a ) return;

	int meio = particiona(V, a, b);
	quicksort(V, a, meio - 1);
	quicksort(V, meio + 1, b);
}
Ejemplo n.º 4
0
int particiona_aleatorio(int* vet, int p, int r) {
  int i = rand()%(r-p) + p;
  // printf("%d\n", i);
  int temp = vet[i];
  vet[i] = vet[r];
  vet[r] = temp;
  return particiona(vet, p, r);
}