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