diff --git a/Arquivos/QuickSort.c b/Arquivos/QuickSort.c
index ce74cdaa889805da0810b088482a0f1357c06f86..95d85263b00213ffbadd8919368818ef8d577aa8 100644
--- a/Arquivos/QuickSort.c
+++ b/Arquivos/QuickSort.c
@@ -1,13 +1,30 @@
 #include <stdio.h>
  
-void Troca ( int* a, int* b ) {
-    int t = *a;
-    *a = *b;
-    *b = t;
+void Troca (int *Vetor, int i, int j) {
+	int aux;
+
+	aux = Vetor[i];
+	Vetor [i] = Vetor[j];
+	Vetor [j] = aux;
 }
- 
+
+void printVetor( int Vetor[], int n ) {
+    int i;
+    for ( i = 0; i < n; ++i )
+        printf( "%d ", Vetor[i] );
+	printf ("\n");
+}
+int Mediana (int Esquerda, int Meio, int Direita) {
+	if ((Esquerda >= Direita && Esquerda <= Meio) || (Esquerda >= Meio && Esquerda <= Direita))
+		return Esquerda;
+	if (( Direita >= Esquerda && Direita <= Meio) || (Direita >= Meio && Direita <= Esquerda))
+		return Direita;
+	else
+		return Meio;
+}
+
 int Particao (int Vetor[], int Esquerda, int Direita) {
-    int Pivo = Vetor[Direita];
+    int Pivo = Mediana (Vetor[Esquerda], Vetor[Esquerda+Direita/2+1], Vetor[Direita]);
     int i = (Esquerda - 1);
  
     for (int j = Esquerda; j <= Direita- 1; j++)
@@ -15,11 +32,12 @@ int Particao (int Vetor[], int Esquerda, int Direita) {
         if (Vetor[j] <= Pivo)
         {
             i++;
-            Troca (&Vetor[i], &Vetor[j]);
+            Troca (Vetor, i, j);
         }
     }
-    Troca (&Vetor[i + 1], &Vetor[Direita]);
-    return (i + 1);
+    Troca (Vetor,i + 1, Direita);
+    printVetor (Vetor, 8);
+    return (i+1);
 }
 
 void QuickSortRecursivo (int Vetor[], int Esquerda, int Direita) {
@@ -59,14 +77,9 @@ void QuickSortIterativo (int Vetor[], int Esquerda, int Direita) {
         }
     }
 }
-void printVetor( int Vetor[], int n ) {
-    int i;
-    for ( i = 0; i < n; ++i )
-        printf( "%d ", Vetor[i] );
-}
  
 int main() {
-    int Vetor[] = {4, 3, 5, 2, 1, 3, 2, 3};
+    int Vetor[] = {51, 2, 45, 95, 43, 78, 12, 32};
     int n = sizeof( Vetor ) / sizeof( *Vetor );
     QuickSortRecursivo( Vetor, 0, n - 1 );
     printVetor( Vetor, n );