From 78944ef7180ad15b4c978b13152115a2a2f94127 Mon Sep 17 00:00:00 2001
From: Fernando Erd <fce15@inf.ufpr.br>
Date: Fri, 11 Dec 2015 10:06:01 -0200
Subject: [PATCH] =?UTF-8?q?Arquivo=20Ordena=C3=A7=C3=A3o.c?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 "Arquivos/Ordena\303\247\303\243o.c" | 55 ++++++++++++++++++++++++++++
 1 file changed, 55 insertions(+)

diff --git "a/Arquivos/Ordena\303\247\303\243o.c" "b/Arquivos/Ordena\303\247\303\243o.c"
index 0b9fca8..ea87549 100644
--- "a/Arquivos/Ordena\303\247\303\243o.c"
+++ "b/Arquivos/Ordena\303\247\303\243o.c"
@@ -37,3 +37,58 @@ void BubbleSort (int *Vetor) {
 		}
 	}
 }
+
+int Particao (int Vetor[], int Esquerda, int Direita) {
+    int Pivo, i, j;
+ 
+	Pivo = Vetor[Direita];
+	i = (Esquerda - 1);
+    for (j = Esquerda; j <= Direita- 1; j++)
+    {
+        if (Vetor[j] <= Pivo)
+        {
+            i++;
+            Troca (Vetor, i, j);
+        }
+    }
+    Troca (Vetor,i + 1, Direita);
+    return (i+1);
+}
+
+void QuickSortRecursivo (int Vetor[], int Esquerda, int Direita) {
+	int pospivo;
+	   if (Esquerda < Direita) {
+		pospivo = Particao(Vetor, Esquerda, Direita);
+		QuickSortRecursivo(Vetor,Esquerda,pospivo-1);
+		QuickSortRecursivo(Vetor,pospivo+1,Direita);
+	}
+}
+void QuickSortIterativo (int Vetor[], int Esquerda, int Direita) {
+    int Posicao;
+    int Pilha[ Direita - Esquerda + 1 ];
+    int top;
+ 
+    top = -1;
+    Pilha[ ++top ] = Esquerda;
+    Pilha[ ++top ] = Direita;
+ 
+    while ( top >= 0 )
+    {
+        Direita = Pilha[ top-- ];
+        Esquerda = Pilha[ top-- ];
+ 
+        Posicao = Particao( Vetor, Esquerda, Direita );
+ 
+        if ( Posicao-1 > Esquerda )
+        {
+            Pilha[ ++top ] = Esquerda;
+            Pilha[ ++top ] = Posicao - 1;
+        }
+ 
+        if ( Posicao+1 < Direita )
+        {
+            Pilha[ ++top ] = Posicao + 1;
+            Pilha[ ++top ] = Direita;
+        }
+    }
+}
-- 
GitLab