From cfbfe3e086edd44485ca2315c7fafe80bc6f2926 Mon Sep 17 00:00:00 2001 From: Fernando Erd <fce15@inf.ufpr.br> Date: Tue, 8 Dec 2015 10:00:20 -0200 Subject: [PATCH] =?UTF-8?q?Esbo=C3=A7o=20quick=20sort=20interativo?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Arquivos/Quicksort_interativo.c | 66 +++++++++++++++++++++++++++++++++ 1 file changed, 66 insertions(+) create mode 100644 Arquivos/Quicksort_interativo.c diff --git a/Arquivos/Quicksort_interativo.c b/Arquivos/Quicksort_interativo.c new file mode 100644 index 0000000..442849d --- /dev/null +++ b/Arquivos/Quicksort_interativo.c @@ -0,0 +1,66 @@ +#include <stdio.h> +#include <stdlib.h> + +typedef struct EstruturaPilha{ + int Posicao; + struct EstruturaPilha *Prox; +} EstruturaPilha; + +typedef struct { + EstruturaPilha *Topo; +} TPilha; + +void InicPilha (TPilha *Pilha) { + Pilha->Topo = (EstruturaPilha*) malloc (sizeof(EstruturaPilha)); + Pilha->Topo->Prox = NULL; +} + +int VaziaPilha (TPilha *Pilha) { + return (Pilha->Topo->Prox == NULL); +} + +void Push (TPilha *Pilha,int elemento) { + EstruturaPilha *Aux; + + Aux = (EstruturaPilha*) malloc (sizeof (EstruturaPilha)); + Aux->Prox = Pilha->Topo; + Pilha->Topo->Posicao = elemento; + Pilha->Topo = Aux; +} + +void Pop (TPilha *Pilha, int *elemento) { + EstruturaPilha *Aux; + Aux = Pilha->Topo; + Pilha->Topo = Aux->Prox; + free (Aux); + *elemento = Pilha->Topo->Posicao; +} + +void QuickSort_Interativo (int *Vetor, int TAM) { + TPilha PilhaDireita, PilhaEsquerda; + int Esquerda, Direita, i, j; + + InicPilha (&PilhaDireita); + InicPilha (&PilhaEsquerda); + Esquerda = 0; + Direita = TAM - 1; + + Push (&PilhaDireita, Direita); + Push (&PilhaEsquerda, Esquerda); + + do { + if (Direita > Esquerda) { + //Particiona (Vetor, Esquerda, Direita, &i, &j); + Push (&PilhaDireita, j); + Push (&PilhaEsquerda, Esquerda); + Esquerda = i; + } else { + Pop (&PilhaDireita, &Direita); + Pop (&PilhaEsquerda, &Esquerda); + } + } while (!VaziaPilha (&PilhaDireita)); +} + +main() { + int n, TAM; +} -- GitLab